首次启动 / segue swift

Posted

技术标签:

【中文标题】首次启动 / segue swift【英文标题】:First time launch / 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 【参考方案1】:

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

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

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

【讨论】:

谢谢。它确实解决了这个错误,但它给了我另一个错误,但它是一个开始。谢谢。 @LuisMartinez 不客气。在 *** 上接受您认为有帮助的答案总是值得赞赏的。 感谢您的帮助。一旦该错误被清除,就很容易解决下一个错误。现在它正在工作。谢谢【参考方案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




【讨论】:

以上是关于首次启动 / segue swift的主要内容,如果未能解决你的问题,请参考以下文章

Swift Scene Delegate 在首次启动时不运行代码

Swift 中的 iOS 8 和 9:首次启动期间 [警告:无法创建正在进行的恢复标记文件]

启动屏幕可能没有触发 segue。 (LaunchScreen.storyboard)

启动和停止 segued AVPlayer 的功能是啥?

检测iOS应用程序的首次启动[重复]

Swift、Modal Segue 和 ViewController 问题