реализовать простой popover в новом xcode4.2 и перехватить событие dismissPopover - PullRequest
0 голосов
/ 06 ноября 2011

Я сдаюсь и мне нужна помощь.

Я пытаюсь реализовать простой поповер в Xcode4 с помощью раскадровки

Я создал раскадровку и добавил вид, который является сборщиком. Я связал кнопку с представлением, и отображается представление со средством выбора. Появится всплывающее окно выбора, и я могу выбрать нужное значение. Когда я отклоняю поповер, я не получаю никакого события. ранее метод "popoverControllerDidDismissPopover" вызывался в вызывающем представлении. Отсюда я мог выполнять любые операции после всплывающего окна и получать любые конкретные результаты, которые я рассчитал на основе выбора средства выбора. Это все работало ранее.

Что является эквивалентом «popoverControllerDidDismissPopover» при использовании раскадровок

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 ноября 2011

У вашего контроллера представления, который "владеет" popover / segue, реализован протокол UIPopoverControllerDelegate с методом popoverControllerDidDismissPopover. Кроме того, убедитесь, что вашей программе назначен идентификатор в Интерфейсном Разработчике. Затем реализуйте метод 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 сообщений, как и ожидалось.

0 голосов
/ 06 ноября 2011

Я не знаю эквивалент xcode, так как я пользователь MonoTouch, но я знаю, что событие DidDismiss не запускается, когда вы программно отклоняете поповер (см. документацию Apple ). Он вызывается только тогда, когда всплывающее окно отклоняется пользователем, выбирающим другой элемент.

Чтобы решить эту проблему в MonoTouch, нам пришлось создать подкласс UIPopoverController, добавить наше собственное событие, переопределить метод Dismiss и запустить новое событие в методе переопределения. Таким образом, он вызывается независимо от того, был ли всплывающий экран отклонен программно или пользователем.

...