我想知道调用外部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 ();
}
非常感谢你。最诚挚的问候。
答案 0 :(得分:0)
在我看来,您尝试做的概念就像在CocoaTouch中更改默认事件和操作流的行为一样。
问题是,ViewDidLoad正是你应该进行初始化的地方,而不是在构造函数本身,在框架上保留NIB加载,只是按照预期处理ViewDidLoad。
阅读苹果的开发文档确实很有帮助,这在一开始就帮助了我很多:https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html