我正在尝试编写一个设置视图控制器的单元测试,我尝试了两种方法来获取视图init,第一种方法是使用bundle来加载nib内容并过滤掉我的那个寻找,如下:
MyViewController *controller = nil;
....
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
NSObject* nibItem = nil;
while ( (nibItem = [nibEnumerator nextObject]) != nil) {
if ([nibItem isKindOfClass:[MyViewController class]]) {
controller = (MyViewController*) nibItem;
break;
} else {
NSLog(@"nibItem class is %@", [nibItem class]);
NSLog(@"nibItem is %@", nibItem);
}
}
这些代码完成后,控制器仍然是nil,我插入一些日志来检查nib类(%@占位符),结果与MyViewController相同(至少两个类描述都没有) ,我确信这些代码在调试/发布目标中运行良好,但是在运行单元测试时它不起作用。
那么这意味着虽然类的描述是相同的,但是类是不同的吗?
我试过的第二种方法是使用initWithNibNamed:owner:options方法,只是简单地指定xib文件名,但是Xcode回复了nib加载但是查看插座未设置,情况就像我发现的问题所描述的那样,但我仔细检查事情是否已正确设置:
到目前为止,我可以手动设置视图控制器的视图和表视图。
答案 0 :(得分:0)
MyViewController *controller;
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
controller=(MyViewController *)[nibContents objectAtIndex:0];
将此现有代码替换为此代码,希望这对您有所帮助。