我有一个包含TabController的视图控制器。在此加载之前,我希望用户登录,这样我就可以检查他们可以访问什么。在我的AppDelegate中,bot rootViewController (带选项卡)和LoginViewController是声明的,它们也连接在IB中:
我在我的AppDelegate里有这个:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// [window addSubview:[rootController view]];
[window addSubview:[loginViewController view]];
[self.window makeKeyAndVisible];
return YES;
}我的计划是在验证并显示rootController之后,取消登录表单,但是rootController会立即显示。我要做的是:
-(IBAction)DidClickLoginButton:(id)sender {
NotesAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.window addSubview:[delegate.rootController view]];
[self dismissModalViewControllerAnimated:YES];
}

有更简单的方法吗?我不明白为什么LoginViewController不出现。
编辑:最终通过将它添加到AppDelegate的didFinishLaunchingWithOptions方法中的rootController中来工作。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// [window addSubview:[rootController view]];
[self.window makeKeyAndVisible];
LoginViewController *loginViewController =[[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil];
[self.rootController presentModalViewController:loginViewController animated:YES];
return YES;
}发布于 2011-06-24 17:58:32
是的会的。当您在窗口上添加根控制器视图时,这将使其首先出现(甚至在登录视图之上),然后您的登录视图将被排除在根视图的后面,而您看不到根视图。
编辑:其中一种方法是先让登录控制器位于根控件的上方(根视图控制器呈现登录视图),然后愉快地关闭登录视图。
发布于 2011-06-24 17:57:26
我认为,与使用Interface相比,用100%的编程方式做事情要容易得多。无论哪种方式,在application:didFinishLaunchingWithOptions:中,您都想做这样的事情:
[rootViewController presentModalViewController:loginViewController animated:NO];然后,在用户登录后,执行:
[rootViewController dismissModalViewControllerAnimated:YES];https://stackoverflow.com/questions/6471781
复制相似问题