设置根视图控制器的模态视图控制器
我想显示一个模式视图控制器用户应该有不登录的用户这是我的方法实现:设置根视图控制器的模态视图控制器
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呈现,但是因为它不是根视图控制器,所以仍然不起作用。
那么我该如何正确设置一个根视图控制器到一个模态视图控制器,然后我可以通过模态方式解除这个控制器。
你不能。根视图控制器应视为您的应用程序的可视化表示。为了使这个模式意味着你的应用程序本身是模态的,显然不是这种情况。
您真正希望能够做的就是将模态视图控制器作为用户看到的第一个东西。这与作为根视图控制器不一样。
将根视图控制器设置为常规视图控制器(或导航控制器),然后将模态视图控制器推到其上。当模式视图控制器被解散时,您的应用程序可能会开始。
那么我如何以及在哪里管理视图控制器中的日志呢?例如,如果VC通过通知以模态方式呈现,我应该以模态方式将其解除,并且如果它作为导航控制器呈现,则我想要按下标签栏控制器 – 2015-02-10 16:48:28
我应该在登录视图控制器中使用协议并管理解散在呈现视图控制器通过委托? – 2015-02-10 16:49:30
我不清楚你在问什么。当您的应用程序启动时,将模式视图控制器推入您的根视图控制器。当它解散时,处理结果并决定去哪里。 – 2015-02-10 16:49:32
我在另一个问题中提供了一个类似问题的答案:http://stackoverflow.com/q/26355847/1652710 当然,这是在Obj-C中,但希望你可以将它翻译成工作解决您在Swift中的问题。 – Stakenborg 2015-04-15 16:42:10