我有以下代码推送UIViewController。此代码是在按下UIButton
时执行的目标方法:
-(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
的头文件:
ParameterListerViewController.h
-------------------------------
@interface ParameterListerViewController : UIViewController<UITextFieldDelegate>
{
UIScrollView* scrollView;
}
@property(nonatomic) NSInteger numberOfParameters;
@end
这是包含UIButton的头文件以及包含用于推送导航控制器的代码的相应目标方法。
SettingsViewController.h
------------------------
@interface SettingsViewController : UIViewController <UITextFieldDelegate, UIPickerViewDelegate, UITableViewDelegate, UITableViewDataSource>
{
id <SettingsViewDelegate> delegate;
}
@end
这是一个可以推送的类对象的头文件:
@interface ItemViewController : UITableViewController
{
}
@end
有什么建议吗?
答案 0 :(得分:0)
您的导航控制器视图必须位于视图层次结构中 除非导航控制器设置为UIWindow的rootViewController,否则需要明确添加。
试试这个:
[self.view addSubview:self.nvc.view];
如果是这种情况,您将不需要执行pushViewController - plvc已经可见。