Отправьте сообщение контроллеру представления, используя -tabBarController: didSelectViewController? - PullRequest
0 голосов
/ 30 августа 2009

Я хотел бы отправить сообщение UITableViewController, который подключен к TabBarController и имеет панель навигации. Однако я не уверен, что нужно сделать, чтобы отправить сообщение. В настоящее время (для тестирования) у меня есть:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog( @"Selected tabbar");
    [viewController sendMessage];
}

NSLog нормально срабатывает, прежде чем код завершится неудачей на следующей строке с «нераспознанным селектором, отправленным в экземпляр ...», который говорит мне, что я близко, но я посылаю -sendMessage не тому объекту. Что нужно для отправки -sendMessage в экземпляр UITableViewController?

Ответы [ 2 ]

1 голос
/ 30 августа 2009

Я предполагаю, что в вашем экземпляре UITableViewController есть метод с именем -sendMessage. Помните, что это будет вызываться для каждого выбора, поэтому все ваших контроллеров представления отвечают на -sendMessage? Кажется удивительным, что вы захотите отправить это во всех случаях. Возможно, вы хотели включить строку вроде:

if (viewController == self.tableViewController)

Вы можете многое узнать о том, что происходит, добавив что-то вроде этого:

NSLog(@"Selected viewController: %@", viewController);

Тогда вы будете знать, с каким объектом вы разговариваете (по крайней мере, с каким классом).

0 голосов
/ 03 сентября 2009

viewController имеет массив под названием viewControllers. В моем случае в массиве только один объект; Это всего лишь предположение, но я думаю, что objectAtIndex: 0 - самый верхний контроллер представления.

Вот код, который я искал:

activeViewController = [[viewController viewControllers] objectAtIndex:0];

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

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