iphone - 基于 TabBar 的应用程序中的注销问题

标签 iphone ios objective-c uitabbarcontroller uitabbar

这是一个很常见的问题,但是在尝试了很多解决这个问题之后,最后我决定将它发布在 StackOverFlow.com 上

我有一个基于标签栏的应用程序。标签栏在 AppDelegate.m 中加载如下:

  self.tabBarController.viewControllers = @[viewController1, viewController2 , viewController3 , viewController4 , viewController5];

我的第 5 个选项卡有一个注销按钮。当用户单击注销时,我想清除/重置整个应用程序并转到登录页面,这是一个 modalviewcontroller。

我在注销时尝试了以下操作:
 NSMutableArray * vcs = [NSMutableArray
                        arrayWithArray:[self.tabBarController viewControllers]];
[vcs removeAllObjects ];//ObjectAtIndex:4];
[self.tabBarController setViewControllers:vcs];

这会从标签栏中删除所有 View 。但是当我再次登录时,什么都没有显示。我想显示我的主屏幕,即默认选择选项卡项目 1。

我已经读过再次手动调用 didFinishLaunchingWithOptions 不是一个好习惯。

有没有办法可以重置所有标签栏并重新初始化它们?

这将帮助我解决与这种情况相关的另一个问题。当用户注销并再次登录,并且 View Controller 没有被清除时,登录后再次显示注销页面。而不是主视图 Controller 。

请帮忙。

提前致谢。

最佳答案

如果你真的想重新开始,你应该放一个方法,让我们在应用程序委托(delegate)中调用它 -(void)setupTabBarController,并在启动时从 application:didFinishLaunchingWithOptions: 调用它。稍后当您想要重置时,请从登录页面再次调用该方法。此方法将在其中创建所有标签栏 Controller 的 View Controller ,并将标签栏 Controller 设置为窗口的 Root View Controller 。

但是,您是否需要这样做并不是很清楚,这取决于所有这些 Controller 在注销时处于什么状态。您的注销页面再次显示的问题可能会以更简单的方式解决。

关于iphone - 基于 TabBar 的应用程序中的注销问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15080153/

相关文章:

iphone - 将图像数组编码为电影文件? (iPhone)

iphone - 如何在 iPhone SDK 中为 Core Plot 添加图例?

iOS 11 中断( ionic )应用程序

ios - 如何显示带有日期的时区缩写

ios - inAPP购买测试流程

ios - 如何在 swift 中实现 UICollectionView 的瀑布布局,根据获取的远程图像改变它们的高度?

ios - objective-c 语法和 C 语法的不同结果

ios - iOS 9 黑屏

iphone - 我的新版 iOS 应用程序仅在从应用程序商店加载时才会崩溃

iOS iPhone - 在 keyboardWillShow 之前获取 UIKeyboard 高度