Уведомление родительского представления о том, что что-то изменилось - PullRequest
0 голосов
/ 22 февраля 2010

У меня есть приложение для iPhone с основными данными.

У меня есть два представления на контроллере навигации (представление A = root, представление B = child).

Я хотел бы сказать представлению A обновить его tableView, когда представление B отключено от контроллера навигации (т.е. когда пользователь нажимает кнопку «назад»). Какой метод вызывается, когда это происходит? Нужно ли устанавливать какой-то протокол или уведомление?

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 февраля 2010

Вы можете реализовать метод viewWillDisappear вашего контроллера представления B.

Лучшим способом было бы объявить "viewBDelegate" -протокол в контроллере B представления, который будет реализован представлением A.

@protocol viewBDelegate <NSObject>
@required
-(void) viewBWillBeClosed;
@end

Затем вам понадобится переменная экземпляра в контроллере вида B, содержащая ссылку на контроллер вида A (установите это при нажатии на вид B).

@property (nonatomic, retain) id<viewBDelegate> delegate;

В методе viewWillDisappear просмотра контроллера B вы можете сообщить об этом делегату (просмотр контроллера A), вызвав метод протокола делегата.

- (void)viewWillDisappear:(BOOL)animated{
    [delegate viewBWillBeClosed];
    [super viewWillDisappear:animated];
}
0 голосов
/ 22 февраля 2010

Один из способов сделать это - создать BOOL (что-то вроде didPushChildController) в родительском объекте, для которого задано значение true при нажатии на дочерний элемент. Затем в родительском viewWillAppear вы можете проверить, установлена ​​ли эта переменная, и делать то, что вы хотите.

В зависимости от сложности стека вашего контроллера, может подойти и делегат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...