【问题标题】:First time launch / segue swift首次启动 / segue swift
【发布时间】:2017-04-05 18:55:23
【问题描述】:

我想要完成的是,一旦应用程序启动,它将检查首次使用。如果这是第一次使用,它将带您到视图控制器输入凭据,否则它将带您到应用程序的主菜单。这是我到目前为止所拥有的,但每次我启动它都会给我一个空白页面,并显示错误消息“一个segue必须有一个performHandler或者它必须覆盖-perform。 “我在情节提要上链接了两个segues。任何人都可以引导我朝着正确的方向前进。

    let defaults = UserDefaults.standard
    if defaults.string(forKey: "isAppAlreadyLaunchedOnce") != nil{
        print("first time")
        self.performSegue(withIdentifier: "toToken", sender: nil)
    }else{
        defaults.set(true, forKey: "isAppAlreadyLaunchedOne")
        defaults.synchronize()
        print("not first")
        self.performSegue(withIdentifier: "toMainMenu", sender: nil)
    }

【问题讨论】:

  • 附带说明,您可能搞混了逻辑——defaults.set(true, forKey: "isAppAlreadyLaunchedOne") 应该在首次启动时被调用。
  • 现在正题:您在 Storyboard 中创建了哪种类型的转场?是自定义的吗?
  • @nshuman 是的,它是一个自定义的 segue。
  • @LuisMartines 请检查我的回答。
  • 为什么要设置Bool 并从UserDefaults 中检索String

标签: ios swift segue uistoryboardsegue swiftyuserdefaults


【解决方案1】:

如果您的 segue 类型在 Storyboard 中设置为 Custom - 您必须使用自己的逻辑对 UIStoryboardSegue 进行子类化才能使其正常工作。

class MySegue: UIStoryboardSegue {
    override func perform() {
        // your custom transition logic
    }
}

否则,只需使用 iOS SDK 中的现有预设之一。

【讨论】:

  • 谢谢。它确实解决了这个错误,但它给了我另一个错误,但它是一个开始。谢谢。
  • @LuisMartinez 不客气。在 StackOverflow 上接受您认为有帮助的答案总是值得赞赏的。
  • 感谢您的帮助。一旦该错误被清除,就很容易解决下一个错误。现在它正在工作。谢谢
【解决方案2】:

你的方法很混乱。我解决这个问题的方法如下所示。

override viewDidLoad() {
super.viewDidLoad

let checkForFirstTimeLaunch = Userdefaults.standard.string(forKey: "Flag")

if checkForFirstTimeLaunch == false {
print("First time launch")

//if user launches app for the first time, it will go here

} else {
//otherwise, it will go here

}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多