【问题标题】:UISplitViewController "ViewIdentifier was not found in Storyboard" error with iOS 7iOS 7 的 UISplitViewController“在 Storyboard 中找不到 ViewIdentifier”错误
【发布时间】: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 不会被子类化。

有人处理过类似的事情吗?

谢谢

【问题讨论】:

    标签: ios objective-c iphone ios7


    【解决方案1】:

    好吧,我有点傻xD

    UISplitViewController 在 iOS 8 及更高版本中支持 iPhone,但我在 iOS 7 模拟器中尝试。

    编辑

    但是奇怪的事情来了。实际上,iOS 7 的 iPhone 支持 UISplitViewController,如果它是初始视图控制器,它就可以工作。如果您尝试在之后加载,就像我在我的问题中尝试的那样,您将收到相同的错误。

    因此,我将初始视图控制器更改为 UISplitViewController,并在需要时更改根视图控制器。我可以回到我的 SplitViewController,因为 [storyboard instantiateInitialViewController] 在这种情况下可以正常工作。

    感谢您的宝贵时间

    【讨论】:

    • 您可以将 splitviewController.view 添加到任何视图控制器的内部。因此,您无需将 spliview 仅用作 initialviewController 并更改您的 rootviewController。
    猜你喜欢
    • 2013-10-30
    • 2015-06-06
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2020-11-07
    • 2014-07-10
    • 1970-01-01
    相关资源
    最近更新 更多