Monotouch定制UIView

时间:2013-03-26 11:31:13

标签: xamarin.ios

我希望有人可以帮助解决我使用xib文件的monotouch这个问题。

我正在尝试创建一个从uiview派生的子视图。在IB中我创建了一个类,将其类型设置为我的自定义类,然后将所有IBOutlet链接到自定义类(这是我认为错误可能的地方,因为我怀疑这应该是文件所有者)。

IB .h文件示例是

@interface ActivityUtilityView : UIView {
UILabel *_ActivityLabel;
UILabel *_CaptionLabel;
}

@properrty (nonatomic, retain) IBOutlet UILabel * ActivityLabel;
@properrty (nonatomic, retain) IBOutlet UILabel * CaptionLabel;

@End

在应用程序代码中,需要使用。

在运行时加载此视图
var intptr = NSBundle.MainBundle.LoadNib("ActivityUtilityView",parent_controller,null).ValueAt(0);
m_ActivityView = new ActivityView(intptr);

第一个问题是没有IBOutlet被实例化。

第二个问题是视图正在创建两次,从我所知道的。

请有人帮忙吗?

修改

我发现问题的一半是在显示视图之前不会实例化插座。

那么如何强制显示子视图呢?

1 个答案:

答案 0 :(得分:0)

我找到了一个有效的解决方案。

m_ActivityView = Activator.CreateInstance<ActivityUtilityView>();
var view = NSBundle.MainBundle.LoadNib("ActivityUtilityView",m_ActivityView,null);
m_ProgressView = Runtime.GetNSObject(views.ValueAt(0) as ActivityUtilityView;

使用IntPtr构造函数创建视图不会在显示视图之前实例化IBOutlets。这种方法似乎是。

澄清由于后台工作线程上的竞争条件引起的问题。