swift - 默认转至 ViewController

标签 swift xcode

我对 swift 比较陌生,慢慢来。
下面是我的代码:

let defaultName = UserDefaults.standard

override func viewDidLoad() {
    super.viewDidLoad()
    let getTheme =  defaultName.integer(forKey: "theme") as Int
    if getTheme == 1{
        self.performSegue(withIdentifier: "darkVC", sender: self)
    }else
        if getTheme == 2{
            self.performSegue(withIdentifier: "lightVC", sender: self)
        } else {
            //Do nothing
    }
}

@IBAction func theme_Selection(_ sender: UIButton) {
    defaultName.set(sender.tag, forKey: "theme")

}

View Controller :
enter image description here
我试图在我的 UserDefaults 中保存用户选择(深色或浅色)并转到相应的 Viewcontroller。不幸的是,它确实保存了 UserDefault 并不断返回到这个 Viewcontroller 以供用户选择。

我已将按钮标记为 1 和 2,并将它们分组到 @IBAction func theme_Selection

有什么想法我在这里错过了什么吗? 提前感谢任何解决方案。

最佳答案

不可能在 viewDidLoad 中执行 performSegue。该 View 尚未附加到窗口。尝试将您的实现移动到 viewDidAppear

关于swift - 默认转至 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51080188/

相关文章:

ios - 内存分析不适用于 Xcode,仅显示 "No Selection"

objective-c - 创建像素缓冲区 Objective-C

没有参数标签的 Swift 函数

ios - Json 数据在手机网络上被截断,在 wifi 上正常

ios - 在 WatchKit 中使用 Helvetica Neue 无效,其他自定义字体有效

iphone - 在 Xcode 中调试时如何打印整数值?

ios - 如何使用 swift 从 [Any] 访问 key

ios - '不能对不可变值 : 'self' is immutable' when iterating? 使用可变的 getter

ios - 在 Swift 中重置结构变量

xcode - 实际 iPad 上的 ASIHTTPRequest 错误,代码 2