我想向附加到TabBarController的UITableViewController发送消息,并且有一个naviagation栏。但是,我不知道如何发送消息。目前(用于测试目的),我有:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NSLog( @"Selected tabbar");
[viewController sendMessage];
}
NSLog在代码在下一行失败之前触发了“未识别的选择器发送到实例...”,它告诉我我很接近,但是我发送-sendMessage到错误的对象。是什么寻找将-sendMessage发送到UITableViewController实例?
答案 0 :(得分:1)
我假设您的UITableViewController
实例有一个名为-sendMessage
的方法。请记住,每次选择都会调用此选项,因此所有视图控制器是否都会响应-sendMessage
?你想要在所有情况下发送它似乎令人惊讶。也许你打算包括一行:
if (viewController == self.tableViewController)
通过添加以下内容,您可以了解更多有关正在发生的事情:
NSLog(@"Selected viewController: %@", viewController);
然后你会知道你正在谈论什么对象(至少是什么课)。
答案 1 :(得分:0)
viewController有一个名为viewControllers的数组。在我的例子中,数组中只有一个对象;这只是猜测,但我认为objectAtIndex:0是最顶层的视图控制器。
这是我要找的代码:
activeViewController = [[viewController viewControllers] objectAtIndex:0];
这有点偏离主题,但是通过这种级别的控制,您可以存储最后一个活动视图控制器,这样当您离开选项卡时,您可以发送任何您想要的消息;甚至问它是否应该保持活跃。