我希望有人可以帮助解决我使用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被实例化。
第二个问题是视图正在创建两次,从我所知道的。
请有人帮忙吗?
修改
我发现问题的一半是在显示视图之前不会实例化插座。
那么如何强制显示子视图呢?
答案 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。这种方法似乎是。
澄清由于后台工作线程上的竞争条件引起的问题。