我有一个Xamarin.iOS解决方案,它有两个项目。第一个是主要的iOS应用程序项目,第二个是Xamarin.iOS库项目。我在每个项目中都有一个情节提要,在iOS项目中,故事板与单个视图控制器很简单,其工作是初始化视图控制器并从库项目加载情节提要。
这背后的原因是,我们想要创建我们的应用程序的副本,为一个特定的客户品牌。因此,主应用程序逻辑将在库项目中,主iOS应用程序包含客户端品牌应用程序的所有样式。
我在做这件事时取得了轻微的成功。我能够通过在第一个故事板的ViewDidAppear方法中调用它来加载第二个故事板。
var sb = UIStoryboard.FromName("Storyboard", null);
var ctlr = sb.InstantiateInitialViewController();
this.PresentViewController(ctlr, true, null);当我试图为第二个故事板的UIViewController中的任何东西添加一个插座时,问题就出现了。我得到了以下错误:
Objective-C exception thrown. Name: NSUnknownKeyException Reason:
[<UIViewController 0x166d5120> setValue:forUndefinedKey:]: this class
is not key value coding-compliant for the key SecondText.SecondText是第二个故事板上UITextField出口的名称。
这可能不是实现我想要的目标的最佳方法,但当将一个出口添加到视图控制器时,我仍然很困惑为什么这个方法不能工作。
当第二个故事板在主iOS应用程序项目上时,这个问题不会发生。
如果有人能对此有所了解的话,我将不胜感激。我已经上传了我的测试项目在这里,如果你想看看。
https://github.com/kckc/testShareStoryboard
最后一个注意事项是,我注意到当第二个故事板在库项目中时,ViewDidLoad方法没有向视图控制器开火,这可能是造成这种情况的原因吗?
发布于 2017-05-05 15:07:36
而不是使用:
var ctlr = sb.InstantiateInitialViewController();尝试按名称实例化第二个视图控制器:
UIStoryboard sb = UIStoryboard.FromName("Storyboard", null);
nameofsecondviewcontroller ctlr = sb.InstantiateViewController("nameofsecondviewcontroller") as nameofsecondviewcontroller;
PresentViewController(ctlr, true, null);这应该使用第二个视图控制器的设计器来初始化视图的控件。
https://stackoverflow.com/questions/43806026
复制相似问题