我有一个应用程序,在tabbar控制器中有一个导航控制器。导航控制器的根是表视图控制器。表视图具有图像视图的segue。我想从图像视图控制器更新选项卡上的徽章值。从标签栏控制器,这工作正常:
UIViewController *viewController = [self.tabBarController.viewControllers objectAtIndex:1];
viewController.tabBarItem.badgeValue = @"x";
但是当我将相同的代码放入imageview控制器时,它不起作用。当我在执行后检查'viewController'的值时,该值为nil。 self.tabBarController也是如此。由于某种原因,图像视图控制器无法看到其tabbarcontroller。
答案 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];
}