3

我有一个 UITableViewController 和一个故事板推送 segue 从原型单元链接到详细信息页面,一个常规的旧 UIViewController。在故事板中,detail ViewController 有一个标识符,segue 有一个标识符,它与 detail 标识符相同,只是第一个字母是小写的。此外,详细 ViewControllerAttractionDetailViewController在类下拉列表中选择了一个“自定义类”( )。

不工作。问题是instantiateViewControllerWithIdentifier:@"AttractionDetails返回nil

相关代码。首先是prepareForSegue调试器从未进入的方法。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"attractionDetails"])
    {
        AttractionDetailViewController *attrDetailVC = [segue destinationViewController];
    }
}

相反,它进入了这个方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //AttractionDetailViewController *attrDetailVC = [[AttractionDetailViewController alloc] init];
    AttractionDetailViewController *attrDetailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"AttractionDetails"];

    NSIndexPath *selIndexPath = [self.tableView indexPathForSelectedRow];
    attrDetailVC.theAttraction = [attractions objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:attrDetailVC animated:YES];
}

由于instantiateViewControllerWithIdentifier返回nil它当然会引发异常。真正有趣的是,如果我改用这alloc init条线,它可以工作,但屏幕全黑。

无论如何,我已经阅读了这个并尝试了一些不同的东西,但我仍然受到阻碍。有没有人有什么建议?

4

1 回答 1

25

问题是你没有UITableViewController从情节提要中实例化你的主视图控制器(),所以它的storyboard属性是零。

于 2012-05-02T16:25:51.507 回答