我的应用中有一个标签栏,其中一个按钮是"个人资料"如果用户未经授权,则应显示一个VC
所以......事情有效,但不正确。看起来我搞砸了一些根控制器。有时我不能弹出vc或更改导航栏标题的颜色。
我在
中创建了一个包含该代码的自定义导航控制器if NSUserDefaults.standardUserDefaults().objectForKey("userId") != nil {
let newController: UserViewController = self.storyboard?.instantiateViewControllerWithIdentifier("userViewController") as! UserViewController
self.setViewControllers([newController], animated: false)
} else {
let newController: LoginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("loginViewController") as! LoginViewController
self.setViewControllers([newController], animated: false)
}
有没有办法正确实施?
答案 0 :(得分:2)
您是否尝试将UINavigationController作为另一个UINavigationController的根目录?因为它被禁止而且效果不佳。
答案 1 :(得分:1)
您正在尝试实例化导航控制器 - 正如@PierreMB所提到的那样,它不会起作用。您应该创建两个带有故事板ID的常规视图控制器" userViewController"和" loginViewController",并实例化它们。
创建一个UINavigationController子类,并将此代码(您编写,略微修改)放入其viewWillAppear()方法中(作为奖励,您可以免费传递&#39;动画&#39;参数):< / p>
if NSUserDefaults.standardUserDefaults().objectForKey("userId") != nil {
let newController = self.storyboard?.instantiateViewControllerWithIdentifier("userViewController") // drop the 'as! UINavigationController'
self.setViewControllers([newController], animated: animated)
} else {
let newController = self.storyboard?.instantiateViewControllerWithIdentifier("loginViewController") // drop the 'as! UINavigationController'
self.setViewControllers([newController], animated: animated)
}
函数instantiateViewControllerWithIdentifier()默认返回一个UIViewController,这是你真正想要显示的内容。