我revealViewController在Xcode 7.2和iOS 9.2中遇到了一些麻烦。
我的应用程序从嵌入在导航控制器中的视图控制器开始执行登录。登录后,或者如果存在登录令牌,我将使用以下代码跳转到嵌入在导航控制器中的另一个视图控制器:
let homePage = self.storyboard?.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController
let homePageNav = UINavigationController(rootViewController: homePage)
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window?.rootViewController = homePageNav
Run Code Online (Sandbox Code Playgroud)
在此主视图控制器中,我想使用的左侧导航菜单SWRealViewController。
我将SWRealViewController视图链接sw_front到我的家庭导航控制器,并添加了以下代码:
if (self.revealViewController() != nil) {
self.menuButton.target = self.revealViewController()
self.menuButton.action = "revealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
Run Code Online (Sandbox Code Playgroud)
但是self.revealViewController()始终返回nil,所以它不起作用。
我想我迷失了revealViewController某个地方(也许当我从第一个导航控制器跳到第二个导航控制器时),但是我不知道该怎么办。
最方便的原因
是你没有正确revealViewController连接。nilseguesstroyboard
请参阅本教程,它很容易遵循。
更新 如果在您的情况下,您只需要打开一个登录 vc,如果用户未登录,您可以这样做:
在应用程序委托中
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
var rootVCStoryboardId = userIsLoggedin ? "SWRevealViewController" : "LoginViewController"
self.window?.rootViewController = UIStoryboard(name: Storyboards.main, bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier(rootVCStoryboardId)
Run Code Online (Sandbox Code Playgroud)
其中 SWRevealViewControllerSWRevealViewController 的 stroyboard id LoginViewController是登录视图控制器(或其导航控制器,如果存在)的 Storyboard id。