2013-03-26 6 views
0

Я надеюсь, что кто-то может помочь с этой проблемой, что я использую monotouch с xib-файлами.Monotouch custom UIView

Я пытаюсь создать subview, полученный из uiview. В IB я создаю класс, задаю его тип своему типу своего настраиваемого класса, а затем привяжу все IBOutlets к пользовательскому классу (здесь я думаю, что ошибка может быть, так как я подозреваю, что это должен быть владелец файла).

A 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 не был создан.

Вторая проблема заключается в том, что представление создается дважды, из того, что я могу сказать.

Пожалуйста, кто-нибудь может помочь?

EDIT

Я обнаружил, что половина проблемы заключается в том, что торговые точки не инстанцированы, пока не появятся вид.

Итак, как я могу заставить отображать subview?

ответ

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 до тех пор, пока не будет отображаться представление. Этот метод кажется.

Чтобы уточнить проблему, возникла из-за состояния гонки на фоне рабочих потоков.

Смежные вопросы