我有一个简单的应用程序有一个加载屏幕。在这里,我会检查NSUserDefaults中的一些用户详细信息,并跳转到登录或注册界面。
加载屏幕的viewDidLoad()方法如下:
override func viewDidLoad()
{
super.viewDidLoad()
loadingVM = LoadingVM() as LoadingVM
print("LoadingVC")
checkStoredUser()
}
这里是checkStoredUser()函数
func checkStoredUser()
{
storedUserStatus = loadingVM.returnStoredUserStatus()
if(storedUserStatus == true)
{
performSegueWithIdentifier("loadingToLoginVC", sender: self)
}
else
{
performSegueWithIdentifier("loadingToSignUpVC", sender: self)
}
}
如您所见,我根据loadingVM.returnStoredUserStatus()返回的结果来决定接下来要做什么。我确信它会返回正确的结果,但是却没有任何反应。
这是prepareForSegue():
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
print("prepareForSegue")
if(segue.identifier == "loadingToSignUpVC")
{
let signUpViewCotroller = (segue.destinationViewController as! LocalSignUpVC)
}
else if(segue.identifier == "loadingToLoginVC")
{
print("loadingToLoginVC")
let loginViewCotroller = (segue.destinationViewController as! LoginVC)
}
}
我进行了一些调查,发现一个看起来奇怪但似乎有效的建议,但这样做不太实用,更不应该这样做:
func checkStoredUser()
{
storedUserStatus = loadingVM.returnStoredUserStatus()
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1.0 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue())
{
if(self.storedUserStatus == false)
{
self.performSegueWithIdentifier("loadingToSignUpVC", sender: self)
}
else
{
self.performSegueWithIdentifier("loadingToLoginVC", sender: self)
}
}
}
有人可以向我解释这里发生了什么,为什么它不起作用以及如何使其正常工作吗?这是我第一次遇到这种情况,似乎找不到任何信息。