NSBundle mainBundle给出了sigabrt错误?

时间:2012-05-25 15:01:51

标签: iphone objective-c

我正在使用xCode 4.2来构建iPhone应用程序。

相关问题 - 我认为这可能是我遇到的真正问题: Why does tableView dequeueReusableCellWithIdentifier:CellIdentifier return null?

但是,让我继续讨论这个问题:

当我以某种方式而不是另一种方式设置rootviewcontroller时,行[[NSBundle mainBundle] loadNibNamed:@"WSCSessionCell" owner:nil options:nil];有一些东西给我一个SIGABRT错误。让我从WSCSessionTable继承UITableViewController的示例代码开始:

- (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时,上面的代码工作正常。这是我的故事板的样子供参考。 Navigation Controller to WSCSessionTable

场景2 - 问题,代码导致SIGABRT

当我在导航控制器和WSCSessionTable之间放置UIViewController时,上面的代码会导致SIGABRT错误。然后我使用一个按钮来实例化WSCSessionTable。这是我的故事板设置

Activate WSCSession via button tap

这是按钮的事件处理程序

- (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?

相关问题 - 我认为这可能是我遇到的真正问题: Why does tableView dequeueReusableCellWithIdentifier:CellIdentifier return null?

1 个答案:

答案 0 :(得分:1)

部分问题是您正在搜索UITableView而不是UITableViewCell。