Ios 推送UIViewController崩溃
我有以下代码推送UIViewController。此代码是在按下UIButton时执行的目标方法:Ios 推送UIViewController崩溃,ios,ipad,ios5,uiviewcontroller,uinavigationcontroller,Ios,Ipad,Ios5,Uiviewcontroller,Uinavigationcontroller,我有以下代码推送UIViewController。此代码是在按下UIButton时执行的目标方法: -(void)pushNavigationController { ParameterListerViewController *plvc = [[ParameterListerViewController alloc] init]; UINavigationController *nvc = [[UINavigationController alloc] initWith
-(void)pushNavigationController
{
ParameterListerViewController *plvc = [[ParameterListerViewController alloc] init];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:plvc];
self.navigationController.navigationBarHidden = YES;
plvc.numberOfParameters = [[numberOfTrialsField text] intValue];
NSLog(@"about to push the navigation controller");
[self.navigationController pushViewController:nvc animated:YES];
}
直到NSLog语句出现,它才会启动,但在那之后,视图控制器再也不会被推送,应用程序就会崩溃。以下是ParameterListerViewController的头文件:
有什么建议吗?导航控制器的视图必须位于视图层次结构中。 除非nav控制器设置为UIWindow的rootViewController,否则需要显式添加它 试试这个:
[self.view addSubview:self.nvc.view];
如果是这种情况,您将不需要执行pushViewController-plvc将已可见。为什么要尝试将导航控制器推到另一个控制器上?请尝试self.navigationController pushViewController:plvc动画:是幸运的是,这也会崩溃。我忘了提到我之前试过推动plvc。我创建了一个全新的项目,只是为了确保它不是那些“神秘”的bug之一,而且仍然无法工作。我在问题中添加了更多细节。当它崩溃时,控制台中有什么?如果看不到您的崩溃日志/控制台输出,将很难帮助您。根据以前的经验,另一个可能的原因是主视图在NIB文件中设置不正确。确保视图出口已连接到文件所有者,并且文件所有者已设置为视图控制器类参数ListerViewController。如果是这种情况,你应该在控制台中看到一个错误。你说的是正确的,但这不是他的问题的答案。他的错误是他推的是UINavigationController而不是UIViewController。罗格的评论是正确的答案。罗格的回答只能部分解决这个问题,因为OP的导航控制器视图仍然不在视图层次结构中。它似乎不是窗口的rootViewController,所以它只是挂在那里,没有展开。@Rayfleck:这不起作用。我的导航控制器是UIWindow的rootViewController,因此我不需要添加任何子视图。我更新了我的问题,提供了更多相关细节。帮助?好的,那还不清楚。当您尝试推动plvc时,会发生什么?你犯了什么错误?我错过了plvc中的[super loadView],这把一切都搞砸了!
SettingsViewController.h
------------------------
@interface SettingsViewController : UIViewController <UITextFieldDelegate, UIPickerViewDelegate, UITableViewDelegate, UITableViewDataSource>
{
id <SettingsViewDelegate> delegate;
}
@end
@interface ItemViewController : UITableViewController
{
}
@end
[self.view addSubview:self.nvc.view];