在 UIAlertView 和 UIActionSheet 的代理方法中给 [UIApplication sharedApplication].keyWindow 设置 rootViewController 时,假如使用下面代码:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1) {
TheViewController *vc = [[TheViewController alloc] init];
[UIApplication sharedApplication].keyWindow.rootViewController = vc;
}
}
And
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0) {
TheViewController *vc = [[TheViewController alloc] init];
[UIApplication sharedApplication].keyWindow.rootViewController = vc;
}
}
Then,在程序执行到这里的时候,你会发现,界面虽然会跳转到 TheViewController,但是在一眨眼间又跳转回原来的界面。
解决办法:#####
1、要先导入 AppDelegate
#import "AppDelegate.h"
2、使用下面代码来实现
TheViewController *vc = [[TheViewController alloc] init];
((AppDelegate *)[[UIApplication sharedApplication] delegate]).window.rootViewController = vc;