Вызовите метод в контроллере представления, который является родителем родителя - PullRequest
0 голосов
/ 08 марта 2012

У меня возникли проблемы с вызовом метода в другом контроллере представления.

Вот мои настройки: ViewController1 -> ViewController2 -> ViewController3

ViewController1 вызывает ViewController2 с помощью вызова WEPopoverController:

UIViewController2 *viewCon2 = [[UIViewController2 alloc] init];

navPopover = [[WEPopoverController alloc] initWithContentViewController:viewCon2];
[navPopover presentPopoverFromRect:CGRectMake(0, 0, 50, 57)
                               inView:self.view
             permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown
                             animated:YES];

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

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

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

1 голос
/ 08 марта 2012

в вашем ViewController1 vieDidLoad добавьте строку ..

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodFromViewController3) name:@"Message" object:nil];

(удалить наблюдателя в Deloc)

тогда, когда вы хотите вызвать метод в представлении 1 из viewcontroler 3 .. Разместить уведомление

[[NSNotificationCenter defaultCenter] postNotificationName:@"Message"  object:nil userInfo:nil];

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

0 голосов
/ 08 марта 2012

Если VC3 имеет ссылку на VC2, а VC2 имеет ссылку на VC1, вы можете сделать это следующим образом в VC3:

ClassOfViewController2* vc2 = [self viewController2];
ClassOfViewController1* vc1 = [vc2 viewController1];
[vc1 myAwesomeMethod];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...