0

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

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

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

第一个问题是没有任何 IBOutlets 被实例化。

第二个问题是视图被创建了两次,据我所知。

请问有人可以帮忙吗?

编辑

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

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

4

1 回答 1

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。这种方法似乎。

为了澄清由于后台工作线程上的竞争条件而导致的问题。

于 2013-03-28T07:35:09.217 回答