【问题标题】:How to change the badge of a view controller that isn't loaded?如何更改未加载的视图控制器的徽章?
【发布时间】:2015-07-17 04:02:12
【问题描述】:

我有一个标签栏控制器,它附加了 3 个视图控制器。

假设您启动应用程序,第一个视图控制器是其他三个加载的视图中唯一的一个。我想设置未加载的第三个视图控制器的徽章值。这是因为我希望用户知道他们在打开应用程序时收到了通知。

有可能吗?我该怎么做?我尝试了以下方法:

从另一个类调用视图(我要更改其徽章的视图):

 NotificationsViewController *class = [NotificationsViewController alloc]init]; 

[class view];

然后,在 NotificationsViewController 类中,如果应用有任何使用解析的通知,我将徽章设置为 1:

- (void)viewDidLoad {
[super viewDidLoad];

PFInstallation *currentInstallation = [PFInstallation currentInstallation];
if (currentInstallation.badge > 0) {

    NSString *badge = @"1";

        [self.tabBarItem setBadgeValue:badge];


    }
   }

为什么这不起作用?如何更改尚未加载的视图控制器的标记?

【问题讨论】:

  • 您正在创建控制器的新实例并在其上设置徽章。您需要访问标签栏控制器中的那个。
  • @dan 你能给我一些示例代码吗?我真的迷路了……

标签: ios parse-platform notifications badge


【解决方案1】:

首先,您需要获取您的标签栏项目:

UITabBarItem *tabBarItem = [[self.tabBarController.viewControllers objectAtIndex:YOUR_INDEX] tabBarItem];

然后,只需将徽章放在上面。

NSString *badge = @"1";
[tabBarItem setBadgeValue:badge];

【讨论】:

  • 必须先加载视图吗?
  • 不,绝对不是,标签栏项目与视图没有直接关系,您可以随时对标签栏项目进行分级并为其设置徽章,而无需加载视图控制器。
  • 嗯因为我收到与self.tabBarController 相关的错误,因为我从我的应用程序委托调用此代码?如果我想从我的应用委托中调用它,是否需要更改此代码?
  • 所以你有一个标签栏控制器,你肯定会在你的 appdelegate 中初始化它。您只需要调用该控制器。你是如何初始化你的标签栏控制器的?
  • 这是我调用的代码:TabBarViewController *class = [[TabBarViewController alloc]init]; UITabBarItem *tabBarItem = [[class.tabBarController.viewControllers objectAtIndex:2] tabBarItem]; NSString *badge = @"1"; [tabBarItem setBadgeValue:badge];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多