呈现ViewController时出错

时间:2013-02-19 18:30:42

标签: ios objective-c cocoa-touch

尝试执行此行时,位于单独的函数中:

[self presentViewController:selectVC_ animated:YES completion:nil];

我收到此错误:

  

*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'* - [__ NSArrayM insertObject:atIndex:]:object不能为nil'

我的声明和实例化位于同一个文件中

@class typesel_vc;
@interface
@property(nonatomic,strong)typesel_vc *selectVC;

@implementation 
@synthesize selectVC=selectVC_;

-(void)viewDidAppear:(BOOL)animated{
    selectVC_=[[typesel_vc alloc]init];
}

有关如何处理此错误的任何想法?

编辑:

在我调用presentViewController

的实际行之前放置分配
selectVC_=[[typesel_vc alloc]init];
[self presentViewController:selectVC_ animated:YES completion:nil];

2 个答案:

答案 0 :(得分:3)

首先,按惯例的类名应以大写字母开头。

其次,在加载控制器视图时初始化将来呈现的模态视图控制器是没有意义的。你应该在出现它之前这样做。

第三,从您发布的代码中无法确定错误。使用日志语句和断点来逐步执行代码,以查看nil对象的出现位置。

答案 1 :(得分:0)

我能够通过修改这些代码来解决这个问题:

selectVC_=[[typesel_vc alloc]init];
[self presentViewController:selectVC_ animated:YES completion:nil];

致:

selectVC_=[self.storyboard instantiateViewControllerWithIdentifier:@"typesel_vc"];
[self presentViewController:selectVC_ animated:YES completion:nil];