【问题标题】:UIStoryboard's instantiateViewControllerWithIdentifier SIGABRT crashUIStoryboard 的 instantiateViewControllerWithIdentifier SIGABRT 崩溃
【发布时间】:2012-12-10 01:39:26
【问题描述】:

问题

在检查并仔细检查了通常的解决方案后,instantiateViewControllerWithIdentifier: 崩溃的原因超出了我的经验范围。

详情

我正在尝试使用情节提要视图控制器通过 UIPageViewController 进行分页,而 pagecontroller 是根控制器的子控制器,类似于 Apple 设置基于页面的项目的方式。

我已经标记了我的故事板 ViewController:

我正在初始化它以供分页使用:

-(MemoImageViewController *)viewControllerAtIndex:(NSUInteger)index
{
    if (index >= [pageMemories count] || [pageMemories count] ==0) return nil;
    MemoImageViewController * viewController = [_mainBoard instantiateViewControllerWithIdentifier:@"MemoImageViewController"];
    viewController.memory = [pageMemories objectAtIndex:index];
   return viewController;
}

_mainboard = 我使用的主要且唯一的故事板的 UIStoryboard 参考。

然而,该应用程序崩溃并显示 SIGABRT,而对原因的解释为零。当我打开异常断点时,它会引导我使用 instantiateViewControllerWithIdentifier 方法。

我尝试过的

  1. 我已尝试从情节提要中启动不同的视图控制器,并且成功了。让我相信这与我正在使用的视图控制器本身有关。
  2. 更改身份、标题、情节提要 ID 没有任何效果。
  3. 我删除了派生数据,快照,清理了我的项目,构建了几种不同的方式,没有用。

我希望这是足够的信息来评估我的问题,我很可能只是将视图控制器切换到 xib,但我想先看看这是否行不通。

谢谢你,节日快乐。

【问题讨论】:

  • MemoImageViewController 是 UIViewController 的子类吗?你登录 _mainBoard 以确保它不是 nil 吗?
  • 是的,它是一个子类,_mainboard 不是 nil。我什至用它来实例化另一个视图控制器
  • 我看不出这段代码有什么问题——我想知道调试器是否指向正确的位置。尝试在实例化后立即在行上记录 viewController,并查看该日志是否运行。另一个问题——你的 MemoImageViewController 类中有自定义的 init 方法吗?
  • 没有自定义的 init 方法,也没有通过 intstatiation。刚刚检查确认。我的想法是它们可能是一种可能性,无论出于何种原因,该项目尚未更新到可以识别标识符的程度(它是一个相对较新的 VC)。这听起来可能吗?
  • 不,我不这么认为——当您构建和运行时,它应该会更新所有内容。正如您推测的那样,它可能与特定的视图控制器有关。我无法想象,如果它没有自定义的 init 方法,那么我认为它至少会通过实例化阶段。

标签: iphone objective-c ios xcode storyboard


【解决方案1】:

尝试从 _mainboard 更改为 self.storyboard

MemoImageViewController * viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MemoImageViewController"];

【讨论】:

  • self.storyboard 也有同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2011-12-04
  • 2018-04-15
  • 1970-01-01
相关资源
最近更新 更多