开始一个新项目时仍然感到困惑。我有一个标签栏应用程序,其中包含许多选项卡以及与每个选项卡关联的导航控制器。
我需要在tabbar之前添加一个登录屏幕。登录时,还需要将用户带到tabbar。即,一旦用户登录,每次他被指向tabbar,除非他退出。我需要选择一种模式。
请选择我最好的选择或任何其他方式来做得更好。
答案 0 :(得分:3)
**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。
更新:试试这个,这样可行。如果不清楚,请告诉我,我会发送一个工作项目。
主故事板中的默认初始化控件是 应用程序启动时自动实例化并显示。至 防止这种情况发生,你需要删除UIMainStoryboardFile 从info.plist文件设置。
如果没有默认的视图控制器,您现在可以自由创建一个 以应用程序启动的方式编程。
这里我在这一行下面写了一个小例子。创建两个没有xib FirstViewController和SecondViewController的视图控制器,并在MainStoryboard_iPhone和In 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;
<强>} 强>
- (void)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