Ios 首次发射/segue swift
我试图做到的是,一旦应用程序启动,它将检查首次使用。如果是第一次使用,它将带您到视图控制器输入凭据,否则将带您到应用程序的主菜单。到目前为止,这就是我所拥有的,但每次启动时,它都会给我一个空白页面,并显示错误消息“segue必须具有performHandler或它必须覆盖-perform。 “我在故事板上链接了两个片段。谁能帮我指引方向吗Ios 首次发射/segue swift,ios,swift,segue,uistoryboardsegue,swiftyuserdefaults,Ios,Swift,Segue,Uistoryboardsegue,Swiftyuserdefaults,我试图做到的是,一旦应用程序启动,它将检查首次使用。如果是第一次使用,它将带您到视图控制器输入凭据,否则将带您到应用程序的主菜单。到目前为止,这就是我所拥有的,但每次启动时,它都会给我一个空白页面,并显示错误消息“segue必须具有performHandler或它必须覆盖-perform。 “我在故事板上链接了两个片段。谁能帮我指引方向吗 let defaults = UserDefaults.standard if defaults.string(forKey: "isAppA
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)
}
如果序列图像板中的segue类型设置为自定义,则必须使用自己的逻辑对
UIStoryboardSegue
进行子类化,才能使其正常工作
class MySegue: UIStoryboardSegue {
override func perform() {
// your custom transition logic
}
}
否则,只需使用iOS SDK中的一个现有预设。您的方法非常混乱。我处理这个问题的方法如下所示
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
}
}
作为补充说明,您可能混淆了逻辑-
默认值。set(true,forKey:“isAppAlreadyLaunchedOne”)
应该在第一次发布时调用。现在讨论主题:您在故事板中创建了什么类型的segue?这是自定义的吗?@nshuman是的,这是自定义的序列。@LuisMartines请检查我的答案。你为什么要设置Bool
并从UserDefaults
检索String
?谢谢。它确实解决了那个错误,但它给了我另一个错误,但这是一个开始。谢谢。@LuisMartinez不客气。在StackOverflow上,接受您认为有帮助的答案是非常感谢的。谢谢您的帮助。一旦那个错误清楚了,就很容易解决下一个错误。现在它正在工作。谢谢