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

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

Спасибо

16
задан Jack 3 February 2010 в 16:32
поделиться

2 ответа

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

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

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

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

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

21
ответ дан 30 November 2019 в 16:00
поделиться

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

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

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

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

@protocol xViewControllerDelegate

    - (void) modalDialogFinished;

@end

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

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

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

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

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

UPDATE ::

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

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

24
ответ дан 30 November 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: