Ios 使用swift后丢弃视图

Ios 使用swift后丢弃视图,ios,uiviewcontroller,uinavigationcontroller,swift,Ios,Uiviewcontroller,Uinavigationcontroller,Swift,当我的应用程序启动时,会显示一个登录按钮。这是LoginViewController。我实例化了一个UINavigationViewController,将LoginViewController作为rootViewController。然后,在登录(使用Facebook SDK)后,我显示第二个视图,即TableViewController。像这样: self.navigationController.popViewControllerAnimated(false); self.

当我的应用程序启动时,会显示一个登录按钮。这是LoginViewController。我实例化了一个UINavigationViewController,将LoginViewController作为rootViewController。然后,在登录(使用Facebook SDK)后,我显示第二个视图,即TableViewController。像这样:

    self.navigationController.popViewControllerAnimated(false);
    self.navigationController.pushViewController(
        tableView, animated: false
    );
不过,这种方法存在一些问题。首先,第二个视图显示back按钮,我知道我可以隐藏它(而且应该隐藏,因为我弹出了第一个视图)。但是,最糟糕的是,navigationController没有被分配给TableViewController,它当前只显示一个注销按钮。因此,当我按logout时,以下明显崩溃:

    self.navigationController.popViewControllerAnimated(false);
    self.navigationController.pushViewController(
        loginView, animated: false
    );
问题是:如果我使用活动登录关闭应用程序(即缓存facebook登录令牌),我希望它直接转到第二个视图控制器(表视图)。我将于5月在DidFinishLaunching的AppDelegate上发布此选项:

    if (Session.activeSession().isOpen()) {
        rootViewController = tableView;
    }
    else {
        rootViewController = loginView;
    }
对于这种情况,最好的方法是什么?也许我应该堆叠这两个视图(不弹出)?如果是,如何使第二个视图位于同一navigationController下?在执行登录后,当应用程序在没有登录令牌的情况下启动,然后注销时,尝试打开tableView会引发异常


最好。

这是模态视图控制器的绝佳机会!使用
UINavigationController
获取所需的任何内容(表视图和其他详细信息视图)。但是,当您需要用户登录时,使用导航控制器中的
presentViewController
在前面显示另一个控制器。这可以是
UINavigationController
本身,也可以是简单的
UIViewController
。完成后,调用dismise方法,它将滑出,将您的基本导航控制器留在那里,随时可用。希望有帮助

怎么样
navigationController.viewControllers=[tableView]
?我认为这没有设置tableView.navigationController,或者是吗?看起来很棒=)我没有想到模型视图!谢谢!很高兴我能帮忙。