首次启动 / 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:首次启动期间 [警告:无法创建正在进行的恢复标记文件]