将根视图控制器设置为模态视图控制器

时间:2015-02-10 16:28:20

标签: ios swift modalviewcontroller

如果没有用户登录,我想向用户显示模态视图控制器。这是我的方法实现:

func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
{
    //  Notifications
    //
    //      User
    //
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "noCurrentUser:", name: UserCurrentUserNotSetNotificationName, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "currentUserDidChange:", name: UserCurrentUserDidChangeNotificationName, object: nil)

    //  Root window
    //
    if managedObjectContext != nil && User.currentUser(managedObjectContext!) == nil
    {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)

        if let logInViewController = storyboard.instantiateViewControllerWithIdentifier("Log In View Controller") as? LogInViewController
        {
            window?.rootViewController?.presentViewController(logInViewController, animated: false, completion: nil)
        }
    }

    return true
}

我包含通知,因为目前,noCurrentUser:方法以模态和动画方式显示我的登录视图控制器。这很有效,除非应用程序启动时,用户会在发送通知之前看到应用程序的闪存(根视图控制器)并显示视图控制器中的模态日志。

我尝试在呈现时将模态动画选项设置为false,但因为它不是根视图控制器,所以这仍然不起作用。

那么如何将根视图控制器正确设置为模态视图控制器,然后我可以以模态方式解除。

1 个答案:

答案 0 :(得分:0)

你不能。根视图控制器应被视为应用程序的可视化表示。要使这个模态意味着你的应用程序本身是模态的,显然不是这种情况。

您真正希望能够做的是将模态视图控制器作为用户看到的第一件事。这与根视图控制器不同。

将根视图控制器设置为常规视图控制器(或导航控制器),然后将模态视图控制器推到其上。当模态视图控制器被关闭时,您的应用程序可能会开始。