使用-tabBarController:didSelectViewController向视图控制器发送消息?

时间:2009-08-30 02:36:06

标签: iphone

我想向附加到TabBarController的UITableViewController发送消息,并且有一个naviagation栏。但是,我不知道如何发送消息。目前(用于测试目的),我有:

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

NSLog在代码在下一行失败之前触发了“未识别的选择器发送到实例...”,它告诉我我很接近,但是我发送-sendMessage到错误的对象。是什么寻找将-sendMessage发送到UITableViewController实例?

2 个答案:

答案 0 :(得分:1)

我假设您的UITableViewController实例有一个名为-sendMessage的方法。请记住,每次选择都会调用此选项,因此所有视图控制器是否都会响应-sendMessage?你想要在所有情况下发送它似乎令人惊讶。也许你打算包括一行:

if (viewController == self.tableViewController)

通过添加以下内容,您可以了解更多有关正在发生的事情:

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

然后你会知道你正在谈论什么对象(至少是什么课)。

答案 1 :(得分:0)

viewController有一个名为viewControllers的数组。在我的例子中,数组中只有一个对象;这只是猜测,但我认为objectAtIndex:0是最顶层的视图控制器。

这是我要找的代码:

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

这有点偏离主题,但是通过这种级别的控制,您可以存储最后一个活动视图控制器,这样当您离开选项卡时,您可以发送任何您想要的消息;甚至问它是否应该保持活跃。