Каков наилучший способ узнать, когда UIViewController выше меня в стеке был вытолкнут? - PullRequest
2 голосов
/ 11 ноября 2008

У меня есть UIViewController, который управляет отображением некоторых данных. Когда пользователь хочет редактировать эти данные, я помещаю правку UIViewController в стек. Когда пользователь заканчивает редактирование, контроллер верхнего вида выталкивается из стека. Какой самый элегантный способ узнать, что мне нужно обновить экран после того, как окно редактирования исчезло?

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

Я также рассмотрел вопрос настройки моего контроллера представления данных в качестве делегата для UINavigationController и ожидания вызова – navigationController:didShowViewController:animated:, меня беспокоит то, что могут быть другие контроллеры представления, которые должны получать уведомления при отображении и это превратится в незначительную головную боль, управляющую тем, какой контроллер должен получать сообщение didShowViewController.

1 Ответ

5 голосов
/ 11 ноября 2008

Я думаю, что viewWillAppear добьется цели.

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

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if ([delegate respondsToSelector:@selector(editEntryByTitle:)])
        [delegate performSelector:@selector(editEntryByTitle:) withObject: textField.text];
    [textField resignFirstResponder];
    [self dismissModalViewControllerAnimated:YES];
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...