UIViews запускает действие в другом UIViewController - PullRequest
1 голос
/ 09 марта 2010

Приложение для моего iPhone состоит из основной вкладки контроллера с 4 основными вкладками. У меня есть ситуация, когда ViewController A загружает ViewController B (используя pushViewController). Теперь мне нужно вернуться к ViewController A и запустить действие на A из B.

Вернуться к А легко, все, что мне нужно сделать, это: -

self.tabBarController.selectedIndex = 0;
[self.navigationController popViewControllerAnimated:YES];

тогда это делает ViewController A видимым.

Но как мне тогда заставить ViewController B запустить действие на A?

Я пытался использовать: -

ViewControllerA  *aVC = ((ViewControllerA *)((UIViewController *)[self.tabBarC.tabBarController.viewControllers objectAtIndex:0]));
[aVC setAnnoSelected];

Только когда я это делаю, я получаю: -

-[UINavigationController setAnnoSelected]: unrecognized selector sent to instance 0x461d290

Я пытался использовать

[ViewControllerA performSelector:@selector(setAnnoSelected) withObject: nil afterDelay: 0.0];

Но пока радости нет.

Любые идеи будут с благодарностью.

Спасибо Шерил

P.S. Это отличный сайт для помощи - спасибо всем, кто когда-либо отвечал на вопрос, так как вы мне тоже помогли.

1 Ответ

2 голосов
/ 09 марта 2010

Похоже, что viewControllers вашего tabBarController на самом деле являются UINavigationControllers (вы можете увидеть это по нераспознанной ошибке селектора). Возможно, вы захотите взглянуть на собственные контроллеры представления этого контроллера:

UINavigationController   *navController = (UINavigationController *) [self.tabBarController.viewControllers objectAtIndex: 0];
ViewControllerA          *controller = [navController.viewControllers objectAtIndex: 0];

[controller setAnnoSelected];

Однако вы можете рассмотреть возможность сделать это с уведомлением, поскольку этот метод немного хрупок.

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