2010-12-12 4 views
2
пользователей

Привет MonoTouch, У меня есть эта странная ситуация, когда у меня есть пользовательское событие, объявленное в пользовательской UIView как так:события становится нулевым в MonoTouch

public delegate void SelectionChangedHandler(SelectableView selectedView, bool selected); 
public event SelectionChangedHandler SelectionChanged; 

Я тогда присваиваемый этот обработчик в методе инициализации из ViewController так:

SelectableView s; 
... 
SelectableView.SelectionChanged += HandleSelectionChanged; 

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

Я нахожу, что событие становится нулевым между назначением и чертежом. Кто-нибудь сталкивался с этим вопросом раньше? Или я делаю что-то явно неправильное в моем использовании событий в MonoTouch?

EDIT: Дополнительная информация - UIView загружается из файла xib. Я просто попытался с UIView, не загруженным из xib, и все работает нормально: | Я немного ошарашен.

EDIT 2: Даже больше информации: Все свойства, установленные на UIView загруженным из XIb по всей видимости, станет нулевым, как хорошо! Вот код, я использую, чтобы загрузить UIView из XIb:

var v = new SelectableView(NSBundle.MainBundle.LoadNib("SelectableView", this, null).ValueAt(0)); 

Я тогда установить свойство на V:

v.SomeProperty = s; 

По времени визуализации SomeProperty равна нулю.

Приветствия Naren

+0

Вы настраиваете/получаете доступ к собственности из разных потоков? – kwcto

ответ

1

я столкнулся с множеством проблем, которые пытаются использовать Interface Builder создан UIViews. Я нашел два обходных пути: 1) Вместо этого используйте UIViewController, который использует довольно немного больше памяти или 2) Создает UIView в коде (без файла xib), что несколько менее удобно, чем использование IB.

В большинстве случаев я получаю первый вариант - просто помните о количестве загружаемых в текущий момент контроллеров просмотра.

+0

Да. Это то, что я сделал. Спасибо за подтверждение :) – Naren

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