我正在开发一款将使用标签栏控制器的应用。但在此标签栏控制器出现之前,我需要对用户进行身份验证。所以我试图在Tab栏控制器出现之前加载一个View。 这是我到目前为止所做的: 我正在使用选项卡式应用程序,故事板中是标签栏控制器。 我创建了一个名为LoginViewController的View Controller,它包含了自己的xib。
所以在 AppDelegate didFinishLaunchingWithOptions:方法中我这样做了:
LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:NULL];
self.window.rootViewController = loginViewController;
[self.window addSubview:loginViewController.view];
然后,在 LoginViewController 实现中,我创建了一个在登录成功时将被调用的方法。这是它的样子:
- (void)removeLoginView
{
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate removeLoginView];
}
现在我不知道如何在AppDelegate中实现此方法。 我怎么能删除loginViewController并从故事板中设置TabBar控制器才能显示?或者关于如何做这样的事情的任何其他建议。
注意:我看到了一些关于使用presentModalViewController的建议,但它已被弃用。
答案 0 :(得分:3)
将tab bar controller
设置为window.rootViewController
,在didFinishLaunchingWithOptions:
方法的末尾,只需使用presentViewController:animated:completion
方法(替换已弃用的presentModalViewController
方法):
LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:NULL];
self.window.rootViewController = tabarViewController;
[tabarViewController presentViewController:loginViewController animated:NO completion:nil]