Я создаю экземпляр UIAlertController и назначаю UIDatePicker одному из его UITextField (ов) в качестве входного представления. Я также назначил обработчик события ValueChanged сборщику. UIDatePicker правильно показывает, когда упомянутый UITextField получает фокус, но когда я изменяю значение даты, когда приложение вылетает.Ошибка приложения в ValueChanged UIDatePicker для UITextField в UIAlertController
Пожалуйста, ознакомьтесь с кодом ниже.
var d = UIAlertController.Create("Confirm", "Fill below with the required info.", UIAlertControllerStyle.Alert);
d.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, ((UIAlertAction obj) => SubmitAction(obj, d))));
d.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));
d.AddTextField((delegate(UITextField obj) {
UIDatePicker picker = new UIDatePicker();
picker.ValueChanged += (object sender, EventArgs e) => { obj.Text = picker.Date.Description; };
obj.InputView = picker;
}));
PresentViewController(d, true, null);
Опять же, сборщик появляется хорошо. Приложение вылетает из события ValueChanged даже с обработчиком EMPTY picker.ValueChanged += (object sender, EventArgs e) => {};
.
Без сбоев без добавления обработчика событий!
Этот код является одним нажатием кнопки Обработчик события TouchUpInside.
Где я делаю неправильно?
К сожалению, я совершенно перепутался должность: TouchUpInside был абсолютно нежелательным в исходном сообщении. Необходимым обработчиком событий является тот, который указан в заголовке ValueChanged. Я обновил его. Однако теперь я попытаюсь сохранить ссылку на класс, как вы предложили. – Shockwaver
И это было абсолютно! Слишком ранняя коллекция. Глобальная ссылка сделала трюк! Еще раз спасибо! – Shockwaver