#xcode4 #ios5 #uipopovercontroller #uipopover
#xcode4 #ios5 #uipopovercontroller #uipopover
Вопрос:
Я сдаюсь и нуждаюсь в некоторой помощи.
Я пытаюсь реализовать простое всплывающее окно выбора в xcode4, используя раскадровку
Я создал раскадровку и добавил представление, которое является средством выбора. Я привязал кнопку к представлению, и отображается представление с помощью средства выбора. Появится всплывающее окно выбора, и я могу выбрать нужное мне значение. Когда я отклоняю всплывающее окно, я не получаю никакого события. ранее в вызывающем представлении вызывался метод «popoverControllerDidDismissPopover». Отсюда я мог выполнять любые операции после всплывающего окна и извлекать любые конкретные результаты, которые я рассчитал на основе выбора сборщика. Все это работало ранее.
Что эквивалентно «popoverControllerDidDismissPopover» при использовании раскадровки
Спасибо
Ответ №1:
Пусть ваш контроллер представления, который «владеет» всплывающим окном / переходом, реализует UIPopoverControllerDelegate
протокол с помощью popoverControllerDidDismissPopover
метода. Кроме того, убедитесь, что вашему переходу присвоен идентификатор в Interface Builder. Затем реализуйте prepareForSegue
метод:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"MyPopoverSegueIdentifier"]) {
UIStoryboardPopoverSegue* popSegue = (UIStoryboardPopoverSegue*)segue;
popSegue.popoverController.delegate = self;
// also set any properties of the popover view controller itself:
// popSegue.destinationViewController.someProperty = xyz
}
}
Теперь вы будете получать popoverControllerDidDismissPopover
сообщения, как и ожидалось.
Комментарии:
1. Спасибо за ответ. В конце концов я нашел способ, основанный на том, как вы описали выше для настройки. А затем использовал действие делегирования из всплывающего окна при возврате данных и одновременной очистке всплывающего окна. Однако я так и не получил событие popoverControllerDidDismissPopover
Ответ №2:
Я не знаю эквивалента xcode, поскольку я пользователь MonoTouch, но я знаю, что событие DidDismiss не запускается, когда вы программно отклоняете всплывающее окно (см. Документацию Apple). Оно вызывается только тогда, когда всплывающее окно отклоняется пользователем, выбирающим другой элемент.
Чтобы решить эту проблему в MonoTouch, нам пришлось создать подкласс UIPopoverController, добавить наше собственное событие, переопределить метод Dismiss и запустить новое событие в методе переопределения. Таким образом, оно вызывается независимо от того, отклоняется ли всплывающее окно программно или пользователем.
Комментарии:
1. Спасибо. Я пытаюсь использовать только стандартные инструменты, поэтому пока у меня нет никаких программ для отклонения всплывающего окна, все это делается с помощью фона раскадровки, что здорово. Я боюсь, что мне, возможно, придется опуститься и испачкаться, что кажется немного отталкивающим по сравнению с тем, что было приятным простым событием.
2. Я не использовал функциональность раскадровки, но, исходя из вашего наблюдения / объяснения, я предполагаю, что она программно отклоняет всплывающее окно и, таким образом, не запускает событие.