我有一个带加载屏幕的简单应用程序。在这里,我检查NSUserDefaults中的一些用户详细信息,并跳转到登录或注册屏幕。
加载屏幕的viewDidLoad()如下所示:
func checkStoredUser()
{
storedUserStatus = loadingVM.returnStoredUserStatus()
if(storedUserStatus == true)
{
performSegueWithIdentifier("loadingToLoginVC", sender: self)
}
else
{
performSegueWithIdentifier("loadingToSignUpVC", sender: self)
}
}
这是checkStoredUser()
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)
}
}
如您所见,我根据loadingVM.returnStoredUserStatus()返回的内容决定从何处开始。我确信这会返回它应该返回的内容,但没有任何反应。
这是prepareForSegue()
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)
}
}
}
我做了一些挖掘工作,发现了一个似乎有效的奇怪建议但不提这样做是不切实际的:
ERROR: 'The input document is not a stylesheet (the XSL namespace is not declared in the root element).'
FATAL ERROR: 'Could not compile stylesheet'
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:832)
at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:618)
任何人都可以向我解释这里发生了什么,为什么这不起作用以及如何让它正常工作?这是我第一次遇到这个,我似乎无法找到任何相关信息。
答案 0 :(得分:14)
<强>说明强>
当您致电checkStoredUser()
时,您的视图尚未显示。
EASY FIX:
将它放在viewDidAppear()
中,如下所示:
override func viewDidAppear(animated:Bool) {
super.viewDidAppear(false)
checkStoredUser()
}