Ошибка вызова метода на родительском viewcontroller из модального окна - PullRequest
1 голос
/ 21 марта 2012

То, что у меня здесь происходит, это страница, которая показывает список результатов поиска. Когда вы нажимаете кнопку поиска, открывается модальное окно, в котором вы можете изменить критерии поиска. Когда вы нажимаете кнопку «Готово», он вызывает метод updateSearch в модальном окне, который, в свою очередь, должен вызывать updateSearch в родительском окне. Я получаю ошибку

Receiver type 'ehrxCMView' for instance message does not declare a method with selector 'updateSearch'

Вот метод родительского viewcontroller

- (void)updateSearch
{

}

Вот мой метод в модальном окне

- (IBAction)updateSearch:(id)sender 
{
    ehrxCMView *parent = (ehrxCMView*)self.parentViewController;
    parent.selectedOptions = self.selectedOptions;
    [parent updateSearch];
    [self dismissModalViewControllerAnimated:YES];
}

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

1 Ответ

2 голосов
/ 21 марта 2012

Каждый раз, когда я вижу self.parentViewController .... это запах кода.

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

Это лучший, более понятный подход, который вы должны использовать.

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