0

私がxibファイルでモノタッチを使用しているこの問題について誰かが助けてくれることを願っています。

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もインスタンス化されないことです。

2番目の問題は、ビューが2回作成されていることです。

誰か助けてもらえますか?

編集

問題の半分は、ビューが表示されるまでアウトレットがインスタンス化されないことです。

では、どうすればサブビューを強制的に表示できますか?

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 に答える