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 6/7 Delta 不工作 iOS 7.1

在 ios 7 和 ios 7+ 中处理设备特定图像的最佳方法

带有自定义声音的 UILocalNotification 仅适用于 iOS 6.1 和 iOS 7.1,不适用于 iOS 7.0

使用 xcode 5 (iOS 7 sdk) 构建 iOS 7 UI