【问题标题】:Objective-C, Storyboard: instantiateViewControllerWithIdentifier returns nilObjective-C,情节提要:instantiateViewControllerWithIdentifier 返回 nil
【发布时间】:2012-05-02 06:37:13
【问题描述】:

我有一个 UITableViewController,它带有一个故事板推送序列,从原型单元链接到一个详细页面,一个常规的旧 UIViewController。在故事板中,detail ViewController 有一个标识符,segue 有一个标识符,它与 detail 标识符相同,只是第一个字母是小写的。此外,详细 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 行,它可以工作,但屏幕全黑。

无论如何,我已经阅读了有关此内容并尝试了一些不同的方法,但我仍然受到阻碍。有人有什么建议吗?

【问题讨论】:

  • 嗯,确实如此。我什至没有想过要检查,因为我以某种方式到达了self(这是从根导航控制器向下的第三个视图)。我尝试了这个,它似乎可以解决问题:UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];。谢谢!

标签: objective-c xcode4 storyboard


【解决方案1】:

问题在于您没有从情节提要中实例化您的主视图控制器(UITableViewController),因此它的storyboard 属性为零。

【讨论】:

  • 那么请给出替代方案?因为我的主视图控制器是由这个 [[MyViewController alloc] init] @rob mayoff 获得的
  • 从情节提要中获取您的主视图控制器,或者从情节提要中加载您的新视图控制器。看UIStoryboard Class Reference
猜你喜欢
  • 1970-01-01
  • 2012-11-02
  • 2016-01-12
  • 1970-01-01
  • 2011-12-29
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多