2015-12-09 3 views
2

Существует много вопросов и ответов на Stack Overflow об этом, но они справедливы для iOS 8 и ранее.Увольнение Popover, созданное segue на iOS 9

iOS 9 отказался от многих вещей, и ответы на SO больше не работали.

Сказал, что я представляю собой поповер, выполняя SEGUE как этот

[self performSegueWithIdentifier:@"myPopover" sender:self]; 

Этот переход создается между текущим ViewController и ViewController, используемой пирог. Нет кнопки. Попёр привязан к представлению.

Проблема заключается в том, что на prepareForSegue:identifier

[segue destinationViewController] 

является UIViewController и

[[segue destinationViewController] popoverPresentationController] 

является новым UIPopoverPresentationController и этот объект не предлагает увольнять апи больше.

Вместо этого мы должны использовать

[self dismissViewControllerAnimated:YES completion:nil]; 

уволить поповер, но это не имеет никакого эффекта для меня.

Мое положение: у меня есть popover с текстовым полем. Я хочу отклонить popover, если пользователь скрывает клавиатуру.

Так что я сделал это:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 

, а затем

- (void)keyboardWillHide:(NSNotification *)notification { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

, но это не имеет никакого эффекта.

Я также попытался создать разворот segue внутри popor viewController и вызывать это из контроллера представления, но это приводит к сбою приложения.

+0

см ссылка может быть поможет вам http://stackoverflow.com/questions/28719306/dismissviewcontrolleranimatedyes-completionnil-not-working-for-ios-device –

+0

Или это http://stackoverflow.com/questions/ 33468698/how-to-detect-when-a-popover-is-уволен-in-ios-9 – iAnurag

+0

@iAnurag - вопрос, который вы упомянули, ничего мне не говорит о том, что я просил ... «как ** уволить ** «нет. – SpaceDog

ответ

3

Просто попробовал, и все это работает отлично.

  • Какова ваша иерархия контроллера вида (контроллеры навигации и т. Д.)?
  • Вы правильно звоните dismissViewControllerAnimated:completion: на том же контроллере просмотра, который представил popover?
  • Убедитесь, что между контроллером детского вида и контроллером навигации не происходит перепутывания.
  • Вы также можете зарегистрировать контроллер presentingViewController контроллера popover.
+0

T H A N K S! ! ! – SpaceDog

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