Objective c 从按钮调用子视图:应用程序关闭

Objective c 从按钮调用子视图:应用程序关闭,objective-c,uinavigationcontroller,console,uibutton,subview,Objective C,Uinavigationcontroller,Console,Uibutton,Subview,当我的应用程序正常启动且没有错误时,当我尝试单击按钮以显示另一个视图时,应用程序将关闭。 在调试器控制台上,显示以下内容: "SEM2REDO[13487:b603] Application tried to push a nil view controller on target <UINavigationController: 0x4ea5be0>" } 这是我的SEM2REDOViewController中显示第二个视图的方法 - (IBAction)chooseFirstM

当我的应用程序正常启动且没有错误时,当我尝试单击按钮以显示另一个视图时,应用程序将关闭。
在调试器控制台上,显示以下内容:

"SEM2REDO[13487:b603] Application tried to push a nil view controller on target <UINavigationController: 0x4ea5be0>"
}

这是我的SEM2REDOViewController中显示第二个视图的方法

- (IBAction)chooseFirstMeeting:(id)sender {     
    SelectRotationController *selectView = [[SelectRotationController alloc] 
                                            initWithNibName:@"SelectView" bundle:[NSBundle mainBundle]];
    [selectView.navigationItem setTitle:@"Select First Meeting"];
    [self.navigationController pushViewController:self.selectRotationController animated:YES];
    self.selectRotationController = selectView; 
    [selectView release];
}

如果这是一个简单的问题,我很抱歉:我是一名高中生,正在尝试独立学习编程,因此非常感谢您的帮助

看起来您正在释放导航控制器,然后尝试向其添加视图控制器

 [self.window makeKeyAndVisible];

SEM2REDOViewController *firstController = [[SEM2REDOViewController alloc] initWithNibName:@"SEM2REDOViewController" bundle:nil]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:firstController];

[self setNavController:navigationController];
 [window addSubview:[navigationController view]];

[navigationController release]; [firstController release];

return YES;
将其更改为

SEM2REDOViewController *firstController = [[[SEM2REDOViewController alloc] initWithNibName:@"SEM2REDOViewController" bundle:nil] autorelease];
 self.navigationController = [[[UINavigationController alloc]initWithRootViewController: firstController]autorelease];

 [window addSubview:self.navigationController.view];

 [self.window makeKeyAndVisible];
return YES;

这将解决您的问题。如果您在理解某些内容时有任何问题,请告诉我。

您的第二段代码与第一段代码相同。你想编辑它吗?另外,使用代码格式——只需突出显示代码,然后选择表单顶部的大括号。尝试更改行[window addSubview….to self.window.rootViewController=self.navigationController;尝试通过代码断点..检查它成功通过了哪一行,在哪一行崩溃了?这是断点下所说的全部内容…我不知道这意味着什么。检查youtube教程中的Xcode调试..将非常有用我不能让你理解如何在这里调试,而且你也没有足够的声誉,我们可以在聊天室聊天来轻松解决你的问题。所以请检查教程,然后尝试通过代码调试。再次检查它在哪一行崩溃。谢谢!我更新了我的界面(有时它不会自动读取类文件)现在它工作了!谢谢!
 [self.window makeKeyAndVisible];

SEM2REDOViewController *firstController = [[SEM2REDOViewController alloc] initWithNibName:@"SEM2REDOViewController" bundle:nil]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:firstController];

[self setNavController:navigationController];
 [window addSubview:[navigationController view]];

[navigationController release]; [firstController release];

return YES;
SEM2REDOViewController *firstController = [[[SEM2REDOViewController alloc] initWithNibName:@"SEM2REDOViewController" bundle:nil] autorelease];
 self.navigationController = [[[UINavigationController alloc]initWithRootViewController: firstController]autorelease];

 [window addSubview:self.navigationController.view];

 [self.window makeKeyAndVisible];
return YES;