【发布时间】:2015-12-05 00:04:32
【问题描述】:
我有以下视图控制器堆栈。
首先,我的应用会显示一个应用游览页面。 (比如说TourViewController - 超级类是UIViewController)。在AppDelegate 中添加了这个控制器作为rootviewcontroller。
self.window.rootViewController = tourViewController;
然后在游览页面中,如果用户点击“登录”按钮,我将展示第二个视图控制器(比如 LoginViewController - 超类是 UIViewController)。
UINavigationController *loginNavigationController = [[UINavigationController alloc] initWithRootViewController:self.loginViewController];
[self presentViewController:loginNavigationController animated:YES completion:nil];
成功登录后,我需要退出第二个视图控制器 (LoginViewController) 并希望显示基于标签栏的视图以满足进一步的需求。
我在登录成功方法中尝试了这段代码。
[self dismissViewControllerAnimated:YES completion:^{
TabBarViewController *tabController = [[TabBarViewController alloc] init];
[self presentViewController:tabController animated:NO completion:nil];
AppDelegate *applicationDelegate = [[UIApplication sharedApplication] delegate];
applicationDelegate.window.rootViewController = tabController;
}];
问题:
当我在
LoginViewController中时,我的堆栈中有两个视图控制器。所以即使我辞掉了LoginViewController,另一个(TourViewController)仍然在屏幕上。如果我尝试了上面的代码,tab bat 控制器被成功添加为根视图控制器。但是,当
LoginViewController辞职时,背景被TourViewController填充
我需要的是,当我辞职LoginViewController时,背景视图应该是标签栏控制器而不是TourViewController。
需要帮助!!
【问题讨论】:
-
简单的解决方案是,将您的
loginviewcontroller分配为根视图而不是显示它,然后当您成功登录时将您的tabbarcontroller分配为根视图。
标签: ios uitabbarcontroller dismiss rootview