我有 2 个故事板:Activities.storyboard
and Contacts.storyboard
.
On Contacts.storyboard
我有一个视图控制器:ContactDetails
.
On Activities.storyboard
我需要参考ContactDetails
in Contacts.storyboard
我创建了一个Storyboard Reference
on Activities.storyboard
并引用了ContactDetails
.
我尝试以编程方式加载此视图控制器
var viewController = Storyboard.InstantiateViewController(nameof(ContactDetails));
NavigationController.PushViewController(viewController, true);
但我没有像普通视图控制器一样以编程方式加载
Foundation.MonoTouchException:抛出 Objective-C 异常。姓名:
NSInvalidArgumentException 原因: Storyboard () 不包含带有标识符的视图控制器
'联系方式'
我知道它是这样工作的:
var storyboard = UIStoryboard.FromName(nameof(Contact), null);
var viewController = storyboard.InstantiateViewController(nameof(ContactDetails));
NavigationController.PushViewController(viewController, true);
但我想使用参考视图控制器,可以吗?
如果您使用 Storyboard ID,它也可以用作“恢复标识符”,并允许您从 Storyboard 进行实例化。我建议使用这种方法,它往往是实现您想要做的事情的最简单的方法。
还值得注意的是,您必须将实例化的 UIViewController 转换为它的类型(至少我发现如果我想传递变量等,它会让生活变得更容易。)
ContactDetails viewController = Storyboard.InstantiateViewController(nameof(ContactDetails)) as ContactDetails;
OR
ContactDetails viewController = Storyboard.InstantiateViewController("ContactDetails") as ContactDetails;
还值得注意的是,UIViewController 的 Xamarin iOS“Storyboard”属性会自动确定 Storyboard 引用,并且值得检查它是否确实为您带来了指向“Contact”storyboard 的指针(因为在 iOS 开发中当然可以使用多个 Storyboard)你选。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)