在 UIAlertView 和 UIActionSheet 的代理方法中给keyWindow设置rootViewController

UIAlertViewUIActionSheet 的代理方法中给 [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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容