3

我有一个在标签栏控制器中有导航控制器的应用程序。导航控制器的根是表视图控制器。表格视图与图像视图有一个segue。我想从图像视图控制器更新选项卡上的徽章值。从标签栏控制器,这工作正常:

UIViewController *viewController = [self.tabBarController.viewControllers objectAtIndex:1];
viewController.tabBarItem.badgeValue = @"x";

但是当我将相同的代码放入 imageview 控制器时,它不起作用。当我在执行后检查'viewController'的值时,该值为nil。self.tabBarController 也一样。由于某种原因,图像视图控制器看不到它的标签栏控制器。

4

2 回答 2

1

您应该能够使用 self.navigationController.tabBarController 访问 tabBarController。所以你的代码需要是:

UIViewController *viewController = [self.navigationController.tabBarController.viewControllers objectAtIndex:1];
viewController.tabBarItem.badgeValue = @"x";
于 2012-11-25T03:52:41.570 回答
0

所以有很多方法可以做到这一点,但最好的方法是订阅 NSNotification,然后从您的图像视图或任何地方,发出通知,使其看起来像这样。

[[NSNotificationCenter defaultCenter]
    addObserver:objectToListen
    selector:@selector(methodToRun:)
    name:@"NotificationName"
    object:nil];

然后在你更深的项目中,比如 imageview 或者你像这样发布的任何东西

[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationName" object:nil userInfo:dictionaryWithValuesForMethodToUse to use];

然后您从 userInfo 获取信息,就像您在更改徽章值的方法中一样

- (void)methodToRun:(NSNotification *)notification
{
    NSDictionary *dictionary = [notification userInfo];
}
于 2012-11-25T00:04:41.057 回答