【发布时间】:2014-07-04 01:21:17
【问题描述】:
当我的应用程序启动时,会显示一个登录按钮。这是登录视图控制器。我将一个 UINavigationViewController 实例化为具有 LoginViewController 作为 rootViewController。然后,在登录(使用 Facebook SDK)后,我会显示第二个视图,即 TableViewController。像这样:
self.navigationController.popViewControllerAnimated(false);
self.navigationController.pushViewController(
tableView, animated: false
);
不过,这种方法存在一些问题。对于初学者,第二个视图显示后退按钮,我知道我可以隐藏(并且应该,因为我弹出了第一个视图)。但是,最糟糕的是,navigationController 没有分配给 TableViewController,它目前只显示一个注销按钮。所以,当我按下注销时,以下显然崩溃了:
self.navigationController.popViewControllerAnimated(false);
self.navigationController.pushViewController(
loginView, animated: false
);
问题是:如果我使用活动登录(即缓存 facebook 登录令牌)关闭应用程序,我希望它直接进入第二个视图控制器(表格视图)。我在 5 月的 AppDelegate 中有这个,在 didFinishLaunchingWithOptions:
if (Session.activeSession().isOpen()) {
rootViewController = tableView;
}
else {
rootViewController = loginView;
}
这种情况的最佳方法是什么?也许我应该只是堆叠两个视图(不弹出)?如果是这样,我如何让第二个视图位于同一个导航控制器下?当应用在没有登录令牌的情况下启动、执行登录然后注销时,尝试解包 tableView 会引发异常。
最好的。
【问题讨论】:
-
navigationController.viewControllers = [tableView]怎么样? -
我认为没有设置tableView.navigationController,还是这样?
标签: ios uiviewcontroller uinavigationcontroller swift