2011-03-03 44 views
1

我想知道调用外部XIB的正确方式是什么。Monotouch:异步加载XIB

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

特别是,我的目标是创建自定义UIViewController并加载在IB中创建的XIB(此元素是附加到Superview的项目)。然后,我会在自定义UIView上附加点按操作。在不重写ViewDidLoad方法的情况下,我无法做到这一点。

我怎样才能找到一个很好的教程来理解我可以利用到UIViewController所有不同的构造函数?

例如,你能解释一下这些问题吗?

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(); 
} 

非常感谢。最好的祝福。

回答

0

您试图做的概念在我看来就像改变CocoaTouch中默认事件和动作流程的行为一样。

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

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