"ios Application tried to push a nil view controller on target"错误处理

关于“ios Application tried to push a nil view controller on target”这个错误,原因其实很简单,问题都是找到了才觉得简单,处理的时候不知道有多烦恼。呵呵,本来就应该是这样吧。

没有错误的作法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
    rootViewController = [[WalkerUITestViewController alloc] initWithNibName:@"WalkerUITestViewController" bundle:nil];
    navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
    
    
    self.window.rootViewController = navigationController;
    
    
    
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

有错误的作法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
    navigationController = [[UINavigationController alloc] 
    initWithRootViewController:rootViewController];
    
    
    self.window.rootViewController = navigationController;
    
    
    
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

当然在这两个例子里面,属性的声明是一样的

@synthesize navigationController;
@synthesize rootViewController;

其实就是在使用之前,自己有木有初始化的问题。ok。

comments powered by Disqus