Подтвердить что ты не робот

Вызывается функция rejectViewControllerAnimated, но ViewController не отклоняется

У меня возникают проблемы с методом dismissViewControllerAnimated, не закрывающим представление.

Что здесь происходит в приложении:

  • Выбрана ячейка в ItemViewController.
  • Просмотр push ed до ItemDetailViewController, и детали отправляются через делегат
  • Пользователь выбирает "done", и событие отправляется через делегат, который должен быть закрыт в ItemViewController

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

- (void)itemDetailViewControllerDidFinish:(ItemDetailViewController *)controller
{
    NSLog(@"Controller: %@", controller);
    // Returns - Controller: <ItemDetailViewController: 0x6b68b60>

    [self dismissViewControllerAnimated:YES completion:nil];
}
4b9b3361

Ответ 1

Что делать, если вместо этого вы вызываете [controller.navigationController popViewControllerAnimated:YES]?

В этом случае, если вы вызываете [controller dismissViewControllerAnimated:YES completion:nil] вместо того, чтобы называть его self?

Ответ 2

Ответ на этой странице: dismissviewcontrolleranimated-vs-popviewcontrolleranimated

rejectViewController используется, когда у вас нет навигационного контроллера. Скорее всего, вы используете навигационный контроллер, затем используете self.navigationController вместо popViewController.

Также обратите внимание на lemax его замечание: используйте NULL, а не nill для обработчика завершения

Ответ 3

У меня возникла проблема в iOS5, где стандартный обратный вызов завершения не позволял виду полностью отклоняться (только текущий толкаемый вид этого модального)

[controller dismissViewControllerAnimated:YES completion:^ {
     //
 }];

Решение для iOS5 - не иметь обратного вызова:

[controller dismissViewControllerAnimated:YES completion:nil];

Ответ 4

Если возникла проблема, когда вызов dismissViewControllerAnimated отклонил клавиатуру в UIViewController, но не сам просмотр.

Решил его с помощью двух вызовов:

[self dismissViewControllerAnimated:NO completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];

мгновенный для клавиатуры, а затем анимированный для контроллера

Ответ 5

Ваша ситуация - ItemViewController → ItemDetailViewController                     (нажата на navigationController) Self.dismissViewController(..) отклоняет контроллер представления, который представляется через себя (в случае с ухом это ItemViewController). Здесь вы не представили VC по себе, вместо этого вы нажали новый VC поверх навигационного стека. Итак, правильным способом отклонения элемента ItemDetailViewController будет

self.navigationController.popViewController(истина). пожалуйста, прочитайте описание функции rejectViewController (....), чтобы получить больше ясности.