使用monotouch和monodevelop,我想创建一个自定义控件。 我按照这个步骤:
此时,我想启动应用程序并在MainWindow的UIView中查看TestView实例的内容。
为了获得这个“绑定”,我尝试了几个步骤(我知道可以通过代码创建出口等来完成..但是我想了解它是否可以通过Interface builder完成)。 / p>
在其中一个尝试的方法中,我通过Interface Builder将值“TestView”设置为TestView.xib视图中的类标识符:这样MonoTouch就在TestView.xib.designer.cs中创建了代码。
[MonoTouch.Foundation.Register("TestView7")]
public partial class TestView7 {
}
然后,在TestView.xib.cs中,我添加了:
public partial class TestView : UIView
{
public TestView (IntPtr p) : base(p)
{
}
}
当我启动应用程序时,我无法在MainWindow视图中看到TestView的内容,但如果在TestView构造函数中我添加了诸如
之类的内容BackgroundColor = UIColor.Yellow;
然后,我可以在MainWindow中看到TestView ...或者更好我只能看到黄色矩形,而不是真实内容!
所以,问题是TestView被绑定到MainWindow中的UIView,但它的内容仅来自代码,而不是来自TestView.xib中通过Interface Builder定义的内容。
有没有办法从TestView.xib加载内容?
答案 0 :(得分:0)
查看http://ios.xamarin.com/Documentation/API_Design#Interface_Builder_Outlets_and_C.23
我相信你需要做的是添加一个处理nib文件的构造函数(以下是来自上面的链接):
使用MonoTouch时,您的应用程序需要创建一个派生自UIViewController的类,并按如下方式实现:
public class MyViewController : UIViewController {
public MyViewController (string nibName, NSBundle bundle) : base (nibName, bundle)
{
// You can have as many arguments as you want, but you need to call
// the base constructor with the provided nibName and bundle.
}
}
然后从NIB文件加载ViewController,执行以下操作:
var controller = new MyViewController ("HelloWorld", NSBundle.MainBundle, this);
这将从NIB加载用户界面。
答案 1 :(得分:0)
Allison A在SO monotouch - reusable iOS custom view中的回答解释了如何将在Interface Builder中创建的现有复合视图加载到自定义视图中。