我正在使用 xCode 4.2 来构建 iPhone 应用程序。
相关问题 - 我认为这可能是我遇到的真正问题: 为什么 tableView dequeueReusableCellWithIdentifier:CellIdentifier 返回 null?
但无论如何,让我继续这个问题:
[[NSBundle mainBundle] loadNibNamed:@"WSCSessionCell" owner:nil options:nil];
当我以某种方式而不是另一种方式设置 rootviewcontroller 时,该行的某些内容会给我一个 SIGABRT 错误。让我从继承 UITableViewController 的 WSCSessionTable 中的示例代码开始:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"WSCSessionCell";
WSCSessionCell *cell = (WSCSessionCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray * topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"WSCSessionCell" owner:nil options:nil];
for(id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[UITableView class]])
{
cell = (WSCSessionCell *) currentObject;
break;
}
}
}
return cell;
}
场景 1 - 没问题 - 没有 SIGABRT
当我的 NavigationController rootviewcontrols WSCSessionTable 时,上面的代码可以正常工作。这是我的故事板的外观以供参考。
场景 2 - 问题,代码导致 SIGABRT
当我在导航控制器和 WSCSessionTable 之间放置 UIViewController 时,上面的代码会导致 SIGABRT 错误。然后我使用一个按钮来实例化 WSCSessionTable。这是我的故事板设置
这是按钮的事件处理程序
- (IBAction)goToSession:(id)sender
{
wscAppDelegate *appDelegate = (wscAppDelegate *)[[UIApplication sharedApplication] delegate];
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
wscSessions *childView = [storyboard instantiateViewControllerWithIdentifier:@"sessionstable"];
// wscSessions *childView = [storyboard instantiateViewControllerWithIdentifier:@"sessionstable"];
childView._arrData = appDelegate._arrSession;
childView._arrSpeaker = appDelegate._arrSpeaker;
childView.title = @"SEssions";
[self.navigationController pushViewController:childView animated:YES];
}
我在 nsbundle mainbundle 行的 cellforrowatindexpath 函数中遇到 sigabrt 错误。这是错误输出
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/dduvernet/Library/Application Support/iPhone Simulator/5.1/Applications/54EF04FD-E010-48BB-A0F4-EB0F12BF8D6A/gmmiphone.app> (loaded)' with name 'WSCSessionCell''
*** First throw call stack:
(0x1da1022 0x2359cd6 0x1d49a48 0x1d499b9 0xa98638 0xa99eb7 0x3d9f 0x911c54 0x9123ce 0x8fdcbd 0x90c6f1 0x8b5d21 0x1da2e42 0x181679 0x18b579 0x1104f7 0x1123f6 0x111ad0 0x1d7599e 0x1d0c640 0x1cd84c6 0x1cd7d84 0x1cd7c9b 0x28f07d8 0x28f088a 0x877626 0x2138 0x2095 0x1)
terminate called throwing an exception(gdb)
有谁知道我如何通过按钮选项卡向下实例化 WSCSessiontable ?
相关问题 - 我认为这可能是我遇到的真正问题: 为什么 tableView dequeueReusableCellWithIdentifier:CellIdentifier 返回 null?