【发布时间】: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 方法。
我尝试过的
- 我已尝试从情节提要中启动不同的视图控制器,并且成功了。让我相信这与我正在使用的视图控制器本身有关。
- 更改身份、标题、情节提要 ID 没有任何效果。
- 我删除了派生数据,快照,清理了我的项目,构建了几种不同的方式,没有用。
我希望这是足够的信息来评估我的问题,我很可能只是将视图控制器切换到 xib,但我想先看看这是否行不通。
谢谢你,节日快乐。
【问题讨论】:
-
MemoImageViewController 是 UIViewController 的子类吗?你登录 _mainBoard 以确保它不是 nil 吗?
-
是的,它是一个子类,_mainboard 不是 nil。我什至用它来实例化另一个视图控制器
-
我看不出这段代码有什么问题——我想知道调试器是否指向正确的位置。尝试在实例化后立即在行上记录 viewController,并查看该日志是否运行。另一个问题——你的 MemoImageViewController 类中有自定义的 init 方法吗?
-
没有自定义的 init 方法,也没有通过 intstatiation。刚刚检查确认。我的想法是它们可能是一种可能性,无论出于何种原因,该项目尚未更新到可以识别标识符的程度(它是一个相对较新的 VC)。这听起来可能吗?
-
不,我不这么认为——当您构建和运行时,它应该会更新所有内容。正如您推测的那样,它可能与特定的视图控制器有关。我无法想象,如果它没有自定义的 init 方法,那么我认为它至少会通过实例化阶段。
标签: iphone objective-c ios xcode storyboard