**Changing the window.rootViewController to the tabbarcontroller
when the user signs in and if not set the window.rootview controller
as the login view controller.**
是做这件事的最好方法,最初如果用户没有登录,那么 LoginViewController 将是 RootViewController,否则 tabBarController 将是 RootViewController,当用户注销时,将 RootViewController 更改为 LoginViewController。
更新: 试试这个,这会奏效。如果不清楚,请告诉我,我将发送 ua 工作项目。
默认情况下,您的 Main Storyboard 中的 InitialViewController 会在您的应用启动时自动实例化并显示。为了防止这种情况发生,您需要从 info.plist 文件中删除 UIMainStoryboardFile 设置。
由于没有默认视图控制器,您现在可以在应用程序启动时以编程方式自由创建一个。
在这里,我在这一行下面写了一个小例子。创建两个没有 xib FirstViewController 和 SecondViewController 的视图控制器,并在 MainStoryboard_iPhone 和 Appdelegate.m 中添加比实现这些方法。
- (BOOL)应用程序:(UIApplication *)应用程序 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
/*
call any of the two methods below, it will change the RootViewController accordingly
*/
// [self firstRootViewController]; // make FirstViewController Root view controller
[self secondRootViewController]; // make SecondViewController Root view controller
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
-(无效)firstRootViewController {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
FirstViewController *first = [sb instantiateViewControllerWithIdentifier:@"FirstViewController"];
[self.window setRootViewController:first];
}
- (void) secondRootViewController {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
SecondViewController *second = [sb instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self.window setRootViewController:second];
}
现在在 MainStoryboard_iPhone.storyboard 中设置 viewController