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

Метод, когда модальное представление отклонено

Я создал приложение с модальным представлением, которое я могу отобразить, а затем уволить. Есть ли простой способ узнать, когда модальное представление было отклонено? Я хотел бы перезагрузить данные в таблице после того, как модальное представление было уволено и не знает, как это сделать.

Спасибо

4b9b3361

Ответ 1

UIViewController имеет свойство parentViewController. В случае, когда контроллер представления представлен модально, свойство parentViewController указывает на контроллер вида, который представил контроллер модального представления.

В вашем модульном контроллере просмотра в viewWillDisappear: вы можете отправить сообщение в parentViewController для выполнения любого действия, которое вы хотите, по существу.

Что-то вроде:

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.parentViewController doSomething];
}

Если ваш родительский контроллер представления является контроллером табличного представления, вы можете позвонить [self.parentViewController.tableView reloadData];, чтобы выполнить то, что вы пытаетесь достичь.

Ответ 2

Рекомендуемым способом сделать это будет использование делегата из вашего модального контроллера представления обратно на контроллер вида, который открыл представление. Ознакомьтесь с официальными документами для примера.

Причина, по которой это рекомендуется, заключается в том, что ViewController, который первоначально начал использовать модальный, также будет контролировать отклонение его.

Это действительно просто сделать и думать более элегантно, чем использовать viewWillDisappear - поскольку есть другие причины, по которым вид может исчезнуть!

создать протокол на вашем модальном ViewController - xViewControllerDelegate

@protocol xViewControllerDelegate

    - (void) modalDialogFinished;

@end

Затем сделайте, чтобы ваш родитель реализовал делегат, используя <xViewControllerDelegate>, когда вы определяете свой родительский контроллер представления.

Вы будете вынуждены иметь метод modalDialogFinished в своем родительском контроллере представления - который может обрабатывать команду отклонения и обновление и т.д.

Не забудьте передать id<xViewControllerDelegate> в контроллер модального просмотра в коде инициализации и сохранить его как поле на объекте.

Если вы хотите отказаться от своего модального представления, вам просто нужно указать делегат .modalDialogFinished.

Если это не имеет смысла, я могу указать вам на лучший код примера, но я надеюсь, что использование делегатов для вас не нова.

UPDATE::

Вот официальная документация Apple о том, как это сделать для модального контроллера:

http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html