iOS 7 的 UISplitViewController“在 Storyboard 中找不到 ViewIdentifier”错误
Posted
技术标签:
【中文标题】iOS 7 的 UISplitViewController“在 Storyboard 中找不到 ViewIdentifier”错误【英文标题】:UISplitViewController "ViewIdentifier was not found in Storyboard" error with iOS 7 【发布时间】:2015-02-24 10:20:45 【问题描述】:我正在处理 UISplitViewController 周围的一个奇怪错误
我创建了一个库来处理 ViewControllers 的表示并尽可能地重用代码。在这段代码中,我使用它们的故事板 ID 实例化 ViewController,并且我正在使用 SplitViewController 来切换 ViewController。
尽管它在 ios 8 中运行良好,但它在 iOS 7 中崩溃并出现此错误。
Storyboard (<UIStoryboard: 0x7f94bb52ccd0>) doesn't contain a view controller with identifier 'MySplitViewControllerIdentifier'
发生这种情况的代码是这样的
+(UIViewController *) instantiateStoryboard:(UIStoryboard *) storyboard
withViewIdentifier:(NSString *) identifier
@try
if ([identifier isEqualToString:@""] || identifier == nil)
return [storyboard instantiateInitialViewController];
else
//HERE IT CRASHES !!!!!!
return [storyboard instantiateViewControllerWithIdentifier:identifier];
@catch (NSException *exception)
NSLog(ERROR_NO_VIEWCONTROLLER_FOUND, [self class], identifier, storyboard.description);
我在情节提要上多次检查了此 SplitViewController 的配置,情节提要 ID 是正确的。如果有帮助,这个 SplitViewController 不会被子类化。
有人处理过类似的事情吗?
谢谢
【问题讨论】:
【参考方案1】:好吧,我有点傻xD
UISplitViewController 在 iOS 8 及更高版本中支持 iPhone,但我在 iOS 7 模拟器中尝试。
编辑
但是奇怪的事情来了。实际上,iOS 7 的 iPhone 支持 UISplitViewController,如果它是初始视图控制器,它就可以工作。如果您尝试在之后加载,就像我在我的问题中尝试的那样,您将收到相同的错误。
因此,我将初始视图控制器更改为 UISplitViewController,并在需要时更改根视图控制器。我可以回到我的 SplitViewController,因为 [storyboard instantiateInitialViewController] 在这种情况下可以正常工作。
感谢您的宝贵时间
【讨论】:
您可以将 splitviewController.view 添加到任何视图控制器的内部。因此,您无需将 spliview 仅用作 initialviewController 并更改您的 rootviewController。以上是关于iOS 7 的 UISplitViewController“在 Storyboard 中找不到 ViewIdentifier”错误的主要内容,如果未能解决你的问题,请参考以下文章
UISplitViewController 和单元格取消选择
UISplitViewController 可以成为 UITabViewController 中的选项卡吗?
在 ios 7 和 ios 7+ 中处理设备特定图像的最佳方法
带有自定义声音的 UILocalNotification 仅适用于 iOS 6.1 和 iOS 7.1,不适用于 iOS 7.0