Как автоматически назвать метод после сования контроллера представления от стека на iPhone

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

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

Спасибо за Вас справка!

10
задан Machavity 23 August 2019 в 02:03
поделиться

3 ответа

Мне тоже нужно было сделать что-то подобное. В ViewController , которому принадлежал мой UINavigationController , мне пришлось реализовать willShowViewController , например:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
}

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

6
ответ дан 3 December 2019 в 16:54
поделиться

Я думаю, здесь есть некоторая путаница. UIView не помещаются и не извлекаются из стека UINavigationController . То, что выталкивается и выталкивается, - это UIViewControllers , которые, в свою очередь, обрабатывают одно или (чаще) несколько представлений каждое.

К счастью, UIViewController имеет следующие методы:

-(void) viewWillAppear:(BOOL)animated;
-(void) viewDidAppear:(BOOL)animated;
-(void) viewWillDisappear:(BOOL)animated;
-(void) viewDidDisappear:(BOOL)animated;

Эти вызываются всякий раз, когда представление вот-вот (исчезнет) появится или только что (исчезло) появилось. Я работаю с панелями вкладок, модальными представлениями и контроллерами навигации. (И их рекомендуется использовать при реализации пользовательских контроллеров.)

Итак, в вашем случае, если я правильно понимаю, вам просто нужно переопределить viewWillAppear : или viewDidAppear : метод того, что вы называете "родительской страницей" чтобы эти сообщения позже отправлялись его дочерним контроллерам. Если вы настроили это с помощью шаблона или в IB, вам, вероятно, не нужно об этом беспокоиться.)

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

3
ответ дан 3 December 2019 в 16:54
поделиться

If you need to notify one controller to another you may use delegation pattern as described here (see 2nd answer).

Unfortunately there is no automatic notification(AFAIK) for exact task as you described. To meet your needs you may send message to delegate (i.e. to your parent controller) in viewWillDisappear function of your child controller.

0
ответ дан 3 December 2019 в 16:54
поделиться
Другие вопросы по тегам:

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