应用程序崩溃时,我推新视图控制器self.navigation控制器

问题描述:

我有一个iOS 5应用程序。 当我要推以我的导航控制器,应用程序崩溃:(应用程序崩溃时,我推新视图控制器self.navigation控制器

这里是我的appDelegate部分:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 


    self.navigationController=[[UINavigationController alloc] init]; 

    StartViewController *startViewController=[[StartViewController alloc] init]; 
    [self.navigationController pushViewController:startViewController animated:YES]; 
    [self.navigationController setNavigationBarHidden:YES]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

    self.window.backgroundColor = [UIColor whiteColor]; 
    self.window.rootViewController=self.navigationController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

这里是我推新视图控制器的方法:

-(IBAction)startPressed:(id)sender 
{ 
    NSLog(@"startPressed: called"); 
    //loading RootViewController (mainscreen view) 
    RootViewController *rootViewController=[[RootViewController alloc] init]; 
    [self.navigationController pushViewController:rootViewController animated:YES]; 
} 

应用程序崩溃at a字符串[self.navigationController pushViewController:rootViewController animated:YES];

请帮帮我。如何解决这个问题?

+1

你有什么问题,看我的答案。但请提供崩溃日志。 – rckoenes 2011-12-30 15:02:03

+0

我觉得在处理自动引用计数模式时出错了。我想我错过了一些东西。这是我第一个启用了自动引用计数模式的ios 5应用程序,其中 – Oleg 2011-12-30 15:59:48

+0

应用程序非常简单。我的startViewController中只有一个按钮。当用户按下它时我试图加载RootViewController。但是,应用程序崩溃:( – Oleg 2011-12-30 16:12:56

解决了这个问题。我改变了`[self.navigationController pushViewController:vc animated:NO]并且调试给了我一个警告:视图插座没有设置。所以我从界面构建器连接了视图,问题没有了。谢谢大家的帮助

一个UINavigationController想要一个RootViewController的:

StartViewController *startViewController=[[StartViewController alloc] init]; 
self.navigationController=[[UINavigationController alloc] initWithRootViewControllr:startViewController]; 

[self.navigationController setNavigationBarHidden:YES]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

更改

@autoreleasepool { 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
} 

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
[pool release]; 

return retVal; 

+0

否,代码仍然不工作 – Oleg 2011-12-30 15:12:27

+0

崩溃日志:'@autoreleasepool { 回报UIApplicationMain(ARGC,ARGV,零,NSStringFromClass([AppDelegate类]));} 'SIGABRT这里 – Oleg 2011-12-30 15:14:20

+0

在。调试,当崩溃后按停止按钮:'在杀死目标时出错(反正杀死):警告:“/SourceCache/gdb/gdb-1708/src/gdb/macosx/macosx-nat-i​​nferior.c”的第2184行错误在函数“void macosx_kill_inferior_safe()”:(os/kern)failure(0x5x)' – Oleg 2011-12-30 15:33:24

这是一个奇怪的方式来处理UINavigationController。在你的情况,我想知道,如果它的工作原理,如果你改变

self.navigationController=[[UINavigationController alloc] init]; 

StartViewController *startViewController=[[StartViewController alloc] init]; 
[self.navigationController pushViewController:startViewController animated:YES]; 

StartViewController *startViewController=[[StartViewController alloc] init]; 
self.navigationController=[[UINavigationController alloc] initWithRootViewController:startViewController]; 

如果您的应用程序仍然崩溃,那将是有趣的,如果你重写StartViewController-loadView方法知道你不– initWithNibName:bundle:

+0

我已经更改了allready应用程序仍然崩溃:( – Oleg 2011-12-30 15:55:16

+1

请说明-loadView方法。 – Oleg 2011-12-30 15:56:09

+0

也许你的意思是'viewDidLoad'方法?I可以用' - initWithNibName:bundle'初始化它:但是应用程序会崩溃。 – Oleg 2011-12-30 15:58:10

我有同样的问题pushViewController初始化,但是当我尝试这样的事情

UINavigationController *rootViewController = (UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController]; 
NSLog(@"NavControler:%@, %@", self.navigationController, rootViewController); 

我得到相同的pointres,NSArray有1个项目。 问题在别的地方。

如果有人能帮助,并添加一些代码,将工作pushViewController因为我有正确的NavigationController但是当我尝试推ViewControler我得到错误

ViewController* NextView = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
UINavigationController *rootViewController = (UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController]; 
[rootViewController pushViewController:NextView animated:YES]; 

请可能有人解释这问题对我来说。

我也有一些pushViewController的问题。我检查了所有目标成员资格,并获得我的xib文件未添加到必要的目标。这对我有帮助。 我想你也应该检查你的xib文件。