当我的应用程序启动时,会显示一个登录按钮。这是LoginViewController。我将具有LoginViewController的UINavigationViewController实例化为rootViewController。然后,登录后(使用Facebook SDK)我显示第二个视图,一个TableViewController。像这样:
self.navigationController.popViewControllerAnimated(false);
self.navigationController.pushViewController(
tableView, animated: false
);
但这种方法存在一些问题。对于初学者,第二个视图显示后退按钮,我知道我可以隐藏(并且应该,因为我弹出了第一个视图)。但是,最糟糕的是,navigationController没有被分配给TableViewController,而TableViewController目前只显示一个注销按钮。因此,当我按下注销时,以下显然会崩溃:
self.navigationController.popViewControllerAnimated(false);
self.navigationController.pushViewController(
loginView, animated: false
);
问题是:如果我使用活动登录关闭应用程序(即缓存了facebook登录令牌),我希望它直接转到第二个视图控制器(表视图)。我在AppDelegate中有这个,在didFinishLaunchingWithOptions:
if (Session.activeSession().isOpen()) {
rootViewController = tableView;
}
else {
rootViewController = loginView;
}
这种情况的最佳方法是什么?也许我应该只堆叠两个视图(不弹出)?如果是这样,我如何让第二个视图在同一个navigationController下?尝试解包tableView时,应用程序在没有登录令牌的情况下启动时会执行登录,然后注销。
最佳。
答案 0 :(得分:1)
这是模态视图控制器的绝佳机会!使用UINavigationController
表示您需要它(表格视图加上其他详细信息视图)。但是当您需要用户登录时,请使用导航控制器中的presentViewController
来显示前面的另一个控制器。这可以是UINavigationController
本身,也可以是简单的UIViewController
。完成后,调用dismiss方法,它将滑落,将基本导航控制器留在那里,随时可以使用。希望有所帮助!