应用程序崩溃时,我推新视图控制器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];
请帮帮我。如何解决这个问题?
解决了这个问题。我改变了`[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;
否,代码仍然不工作 – Oleg 2011-12-30 15:12:27
崩溃日志:'@autoreleasepool { 回报UIApplicationMain(ARGC,ARGV,零,NSStringFromClass([AppDelegate类]));} 'SIGABRT这里 – Oleg 2011-12-30 15:14:20
在。调试,当崩溃后按停止按钮:'在杀死目标时出错(反正杀死):警告:“/SourceCache/gdb/gdb-1708/src/gdb/macosx/macosx-nat-inferior.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:
我有同样的问题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文件。
你有什么问题,看我的答案。但请提供崩溃日志。 – rckoenes 2011-12-30 15:02:03
我觉得在处理自动引用计数模式时出错了。我想我错过了一些东西。这是我第一个启用了自动引用计数模式的ios 5应用程序,其中 – Oleg 2011-12-30 15:59:48
应用程序非常简单。我的startViewController中只有一个按钮。当用户按下它时我试图加载RootViewController。但是,应用程序崩溃:( – Oleg 2011-12-30 16:12:56