iOS VIEWWILLISE错误:";视图不在窗口层次结构中;

iOS VIEWWILLISE错误:";视图不在窗口层次结构中;,ios,swift,ios8,viewwillappear,viewdidappear,Ios,Swift,Ios8,Viewwillappear,Viewdidappear,我有一个Swift应用程序,我想做的是每次应用程序激活时,我都要检查会话中的用户。如果没有找到,我想展示我在故事板中设计的登录视图控制器。如果找到,我需要一切恢复正常 我有另一个主视图控制器,它被设置为我的初始视图控制器。如果找不到用户,我不希望主视图控制器出现 我这样做是为了处理状态恢复,同时也在会话中查找用户: func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder)

我有一个Swift应用程序,我想做的是每次应用程序激活时,我都要检查会话中的用户。如果没有找到,我想展示我在故事板中设计的登录视图控制器。如果找到,我需要一切恢复正常

我有另一个主视图控制器,它被设置为我的初始视图控制器。如果找不到用户,我不希望主视图控制器出现

我这样做是为了处理状态恢复,同时也在会话中查找用户:

func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool {
    return <userInSession> != nil
}
func应用程序(应用程序:UIApplication,shouldRestoreApplicationState编码器:NSCoder)->Bool{
返回!=零
}
我创建了一个从主视图控制器到登录视图控制器的序列。在主视图控制器的ViewDidDisplay方法中,我检查以确保用户已登录。如果他们没有登录,我将执行到登录视图控制器的步骤

用户登录后,我只需关闭登录视图控制器

问题是,由于我使用ViewDidDisplay,在登录视图控制器出现之前,主视图控制器会显示一秒钟,以防用户未登录。我想避免这种情况。我尝试使用ViewWillAspect方法,但这会产生以下错误:

2014-12-14 23:42:52.910 appname[78187:18685210]警告:试图在上显示其视图不在窗口层次结构中的


关于如何处理这种情况,您有什么想法吗?

我认为您无法避免先显示主视图,即设置主视图的方式。(我已经看到了您描述的在某些情况下需要绕过流中视图的问题。)

尝试重新排列故事板,使登录视图控制器位于第一位,并转到主视图控制器

当用户首次运行应用程序时,他/她需要首先登录。成功登录后,用户转到主视图控制器及更高级别


当应用程序关闭时,通过在shouldSaveApplicationState中返回YES来保存应用程序状态。当应用程序重新启动时,将调用shouldRestoreApplicationState。在这里,您检查用户是否已登录,如果未登录,则返回NO,这样状态就不会恢复。这将强制用户进入应用程序的开头,即您的登录视图。

您是否尝试过在没有动画的情况下进行此过程?@rdelmar是的,我尝试过。视图仍会在瞬间显示–看起来不太好