Objective-C,Storyboard:instantiateViewControllerWithIdentifier返回nil

Sab*_*a S 3 objective-c storyboard xcode4

我有一个UITableViewController,它有一个storyboard push segue,从原型单元格链接到一个详细页面,一个普通的旧UIViewController.在故事板中,细节ViewController具有标识符,并且segue具有与细节标识符相同的标识符,除了第一个字母是小写的.此外,细节ViewController AttractionDetailViewController在类下拉列表中选择了"自定义类"().

不行.问题是instantiateViewControllerWithIdentifier:@"AttractionDetails退货nil.

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

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

相反,它进入这个方法:

- (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];
}
Run Code Online (Sandbox Code Playgroud)

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

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

rob*_*off 25

问题是您没有UITableViewController从故事板中实例化主视图控制器(the ),因此其storyboard属性为nil.