【问题标题】:PresentViewController, storyboard doesn't contain a view controllerPresentViewController,故事板不包含视图控制器
【发布时间】:2015-05-18 17:30:05
【问题描述】:

在最近的 Xamarin iOS 或 Xamarin Studio 更新中发生了一些变化,现在我在使用 PresentViewController 时遇到了奇怪的错误。一个月前,同样的代码有效。我认为 Xamarin 中的某些内容发生了变化,因为他们最近在故事板属性/小部件中添加了“模块”行

           // Instantiate and push controller
            UIStoryboard storyBoard = UIStoryboard.FromName("MainStoryboard", null);
            CustomViewController navigationController = storyBoard.InstantiateViewController("CustomViewController") as CustomViewController;
            this.InvokeOnMainThread(() => {
                this.PresentViewController(
                    navigationController,
                    true,
                    null
                );
            });

上面的代码根据下面的故事板截图生成了这个错误:

Foundation.MonoTouchException:抛出 Objective-C 异常。名称:NSInvalidArgumentException 原因:Storyboard () 不包含标识符为“CustomViewController”的视图控制器

我的 Xamarin Studios 版本是 5.8 build 443,Xamarin iOS 是 8.8.0.2,Xcode 是 6.2 (6776)

---------------更新----

所以我在文本编辑器中打开故事板文件并检查 Xamarin Designer 生成的代码。几个月前创建的控制器有一个故事板标识符,但今天创建的控制器没有一个故事板标识符,即使我已经在 Xamarin Designer 中明确设置了它......这听起来有问题。代码如下:

更新前几个月前生成的旧控制器:

            <navigationController definesPresentationContext="YES" id="123" sceneMemberID="viewController" storyboardIdentifier="RedViewNavigationController" restorationIdentifier="RedViewNavigationController">
                <navigationBar key="navigationBar" contentMode="scaleToFill" id="126">
                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                </navigationBar>
                <connections>
                    <segue destination="125" kind="relationship" relationship="rootViewController" id="124"/>
                </connections>
            </navigationController>

今天生成的导致异常的新代码:

            <navigationController definesPresentationContext="YES" id="164" sceneMemberID="viewController" restorationIdentifier="JZCustom">
                <navigationBar key="navigationBar" contentMode="scaleToFill" id="167">
                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                </navigationBar>
                <connections>
                    <segue destination="166" kind="relationship" relationship="rootViewController" id="165"/>
                </connections>
            </navigationController>

因此,一旦您在文本编辑器中手动打开情节提要文件并添加情节提要标识符,情节提要就会成功打开而不会出现异常。看起来像个错误?

【问题讨论】:

  • 感谢您的更新。手动将storyboardIdentifier 添加到故事板文件对我有用。我希望他们能尽快修复它。
  • 我与 Xamarin 支持人员进行了交谈,他们说正在修复错误并通过 QA 流程。我发现的最佳选择是降级您的 Xamarin 版本(也许是 xcode?),或者只是执行我在此处建议的解决方法。但是,当他们修复错误时,这种解决方法可能会导致未来的故事板视图出现丑陋的损坏......
  • 我只是在为多屏应用程序做 Xamarin 教程并收到此错误。我以为我做错了什么(我使用了 Visual Studio,代码非常相似)。看起来这是一个错误。谢谢
  • 手动编辑修复了它。谢谢

标签: uiviewcontroller xamarin.ios xamarin uistoryboard


【解决方案1】:

对我来说,唯一的解决方案似乎是打开 xCode 并在那里添加一个故事板。非常担心这个错误到达了我正在处理的稳定频道......

注意:手动编辑情节提要 xml 并没有给我正确的运行时结果...

【讨论】:

  • 是的,这个错误似乎是 Xamarin 特有的,所以在 xcode 中执行它应该可以正常工作。最后我检查了错误修复正在通过 Alpha 通道,如果还没有的话,它应该很快就会进入稳定通道。最近没更新。
【解决方案2】:

我得到同样的错误。由于某种原因,旧代码可以使用相同的方法。只有在创建新的 ViewController 时才会出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2018-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多