我有两个视图 - view1和view2。 View1是我从mainwindow.xib加载的默认viewcontroller。 根据某些条件检查,我想加载View1或View2,如果用户注册没有完成,请为用户加载注册屏幕,否则转到默认视图控制器。
我如何以及在何处检查此情况?
请帮忙。
提前致谢。
答案 0 :(得分:3)
在您的app delegate
中- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if(needToLogin) {
[self setViewController:[[[ViewController2 alloc] initWithNib:@"Login View"] autorelease]];
}
[window setRootViewController:viewController];
}
如果needToLogin返回true,这会将视图控制器切换到view2视图控制器。否则,它将转到mainwindow.xib
中指定的默认控制器另一种方法(因为你可能还需要主视图控制器)就是在需要时显示登录视图控制器。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if(needToLogin) {
ViewController2 *loginVC = [[[ViewController2 alloc] initWithNib:@"LoginViewController"] autorelease];
[[self viewController] presentViewController:loginVC animated:NO];
}
[window setRootViewController:viewController];
}
注意,您必须致电[self dismissViewControllerAnimated:YES]
以摆脱登录视图。
编辑:来自OP的回复:
我先尝试过,
if(loginflag){
[self setViewController:[[[SignUpViewController alloc] initWithNibName:@"SignUpViewController" bundle:nil] autorelease]];
}
[self.window setRootViewController:self.signUpView];
请改为尝试:
if(loginFlag) {
[self setViewController:[[[SignUpViewController alloc] initWithNibName:@"SignUpViewController" bundle:nil] autorelease]];
}
[[self window] setRootViewController:[self viewController]];
答案 1 :(得分:1)
如果您只是计划在需要用户注册的情况下打开注册屏幕,为什么不坚持使用默认的视图控制器,但在-applicationDidBecomeActive:
为注册视图提供模态视图控制器?
答案 2 :(得分:0)
根据给出的信息,您可以在AppDelegate中创建一个标志,该标志可以根据用户注册是否完成而持久化。然后在“didFinishLaunching ...”方法中,您可以检查此标志并根据此加载正确的视图。