推动UIViewController崩溃

时间:2012-02-01 00:22:08

标签: ios ipad ios5 uiviewcontroller uinavigationcontroller

我有以下代码推送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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的导航控制器视图必须位于视图层次结构中 除非导航控制器设置为UIWindow的rootViewController,否则需要明确添加。

试试这个:

    [self.view addSubview:self.nvc.view];

如果是这种情况,您将不需要执行pushViewController - plvc已经可见。