从NavigationViewController取消所有视图

时间:2018-11-13 11:19:24

标签: ios objective-c xcode

我有以下设置:

  

AuthVC ||导航器=> TabBarContr => MainVC / SecondVC

                               => SettingsVC

在我的AuthVC中,我检查用户是否登录。如果是,我只需打开我的Navigator类,该类是NavigationViewController,并且将我的“ TabBarContr”作为rootview。那里我有两个TabBarItems。在我的TabBarContr的导航栏中,有一个“设置”按钮可以打开我的SettingsVC。在那里,我有一个logout按钮。按下该按钮后,我注销并想要杀死除authVC-Controller之外的所有内容,以便此时可以重新打开我的login-VC。

我在做什么: 当按下logout时,我从我的SettingsVC链接回我的TabBarContr。我在那里打dismissViewController

我认为这会起作用,因为我真的回到了AuthVC。但是,再次登录后,它打开了我的TabBarContr,在加载内容时遇到了一些问题,因为某些对象仍在我以前的登录会话中仍然存在。

那我该怎么做才能真正杀死除AuthVC以外的所有东西?

4 个答案:

答案 0 :(得分:1)

将AuthVC设置为窗口的rootViewController。

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

从情节提要中实例化AuthVC并将其分配给窗口的rootViewController

appDelegate.window?.rootViewController = AuthVC

答案 1 :(得分:1)

“ ...但是再次登录后,它将打开我的TabBarContr,加载时出现了一些问题...”

如果我了解您要删除每个视图,但是您的问题是您的视图控制器未正确重启。您可能有一些保留的引用,因此您在重用vc对象,然后在第二次显示它们时遇到一些问题。尝试查看关闭/弹出后哪些参考没有发布。

答案 2 :(得分:0)

或者您可以通过settingsVC中的下一个代码为窗口设置根视图控制器:

//Did tap logout button
self.view.window?.rootViewController = AuthVC

如果这对您没有帮助,请在AuthVC之后发送您如何精确显示NavigationViewController。

答案 3 :(得分:0)

尝试一下

DELETE