Monotouch:异步加载XIB

时间:2011-03-03 19:03:59

标签: ios uiviewcontroller xamarin.ios xib lifecycle

我想知道调用外部XIB的正确方法是什么。

方法MonoTouch.Foundation.NSBundle.MainBundle.LoadNib以同步方式加载XIB,但是,以这种方式,我无法覆盖ViewDidLoad方法。

特别是,我的目标是创建自定义UIViewController并加载在IB中创建的XIB(此元素是附加到Superview的项目)。然后我会在自定义UIView上附加点按操作。如果没有覆盖ViewDidLoad方法,我就无法做到。

如何找到一个好的教程来理解我可以在UIViewController中使用的所有不同的构造函数?

例如,你能解释这些ctors吗?

public MyCustomView (IntPtr handle) : base(handle)
{
    Initialize ();
}

[Export("initWithCoder:")]
public MyCustomView (NSCoder coder) : base(coder)
{
    Initialize ();
}

public MyCustomView () : base("MyCustomView", null)
{
    //---- this next line forces the loading of the xib file to be synchronous
    MonoTouch.Foundation.NSBundle.MainBundle.LoadNib ("MyCustomView", this, null);
    Initialize ();
}

非常感谢你。最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

在我看来,您尝试做的概念就像在CocoaTouch中更改默认事件和操作流的行为一样。

问题是,ViewDidLoad正是你应该进行初始化的地方,而不是在构造函数本身,在框架上保留NIB加载,只是按照预期处理ViewDidLoad。

阅读苹果的开发文档确实很有帮助,这在一开始就帮助了我很多:https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html