无法从ImageView访问TabBarController

时间:2012-11-24 23:58:14

标签: ios

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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];
}