问题描述
- pushViewController不正常运行
- pushViewController在AppDelegate中不正常运行,只有警报视图解除了。
代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { loginReapeat = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(repeatLoginProcess) userInfo:nil repeats:YES]; //First Launch Settingsif ([[NSUserDefaults standardUserDefaults] boolForKey:@""FirstLaunch""]){}else{ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@""FirstLaunch""]; [[NSUserDefaults standardUserDefaults] synchronize]; [self alertShow];} [window addSubview:[navigationController view]];[window makeKeyAndVisible];return YES;} -(void)alertShow{ UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@""Help!"" message:@""Need some help to use this App? Please tap the 'Help' button."" delegate:self cancelButtonTitle:@""Cancel"" otherButtonTitles:@""Help""nil];[alert show];}- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{NSString *title = [alertView buttonTitleAtIndex:buttonIndex];if([title isEqualToString:@""Help""]){ SignUp *signUp = [[SignUp alloc]initWithNibName:@""SignUp"" bundle:nil] [self.navigationController pushViewController:signUp animated:YES];}}
解决方案
原因有可能是你在执行alertview 代理方法的内部pushViewController时当前的window还没有设置好它的rootViewcontroller .所以你可以尝试这样改一下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { loginReapeat = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(repeatLoginProcess) userInfo:nil repeats:YES]; [window addSubview:[navigationController view]]; //先设置window 的rootViewcontroller//First Launch Settingsif (![[NSUserDefaults standardUserDefaults] boolForKey:@""FirstLaunch""]){ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@""FirstLaunch""]; [[NSUserDefaults standardUserDefaults] synchronize]; [self alertShow];} [window makeKeyAndVisible];return YES;}
时间: 2024-09-20 00:11:51