我有一个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];
}
}
相反,它采用了这种方法:
- (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
行代替,它可以工作,但屏幕全黑。
无论如何,我已经读过这篇文章并尝试了一些不同的东西,但我仍然受到了阻碍。有没有人有任何建议?
答案 0 :(得分:25)
问题是您没有从故事板中实例化主视图控制器(UITableViewController
),因此其storyboard
属性为零。