【问题标题】:iOS, decrease icon badge numberiOS,减少图标徽章数量
【发布时间】:2013-02-18 06:11:29
【问题描述】:

我用

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:[UIApplication sharedApplication].applicationIconBadgeNumber -1];

减少图标徽章计数,但实际上它被清除了。当我按下主页按钮时,徽章计数不存在。

但是,如果我尝试这样的固定值

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:4];

,徽章数量符合预期。

所以,问题是:为什么是

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:[UIApplication sharedApplication].applicationIconBadgeNumber -1];

不工作?

【问题讨论】:

  • 这段代码按我的预期工作(XCode 4.6,iOS 6.1 Simulator,放在视图控制器的 viewDidLoad 方法中)。所以我怀疑可能还有其他一些事情导致了这个问题。您能否提供更多信息,例如您将这行代码放在哪里,[UIApplication sharedApplication].applicationIconBadgeNumber 的值是什么?
  • @RoxDorentus 代码放在didFinishLaunchingWithOptions里面的AppDelegate中。

标签: ios icons badge


【解决方案1】:

为什么你不这样做:

NSInteger numberOfBadges = [UIApplication sharedApplication].applicationIconBadgeNumber
numberOfBadges -=1;

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:numberOfBadges];

【讨论】:

    【解决方案2】:

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:[UIApplication sharedApplication].applicationIconBadgeNumber -1]; 是你的错

    [UIApplication sharedApplication].applicationIconBadgeNumber -1
    

    在那里没有有效的操作。

    如果您感到困惑,请使用临时变量来更改徽章计数。

    编辑: 像这样使用它。

    int value = [UIApplication sharedApplication].applicationIconBadgeNumber;
    value--;
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:value];
    

    【讨论】:

      【解决方案3】:

      快速尝试以减少

          let currentCountStr = UIApplication.sharedApplication().applicationIconBadgeNumber.description
          let currentCount = Int(currentCountStr)
          if(currentCount > 0) {
              UIApplication.sharedApplication().applicationIconBadgeNumber = currentCount! - 1
          } else {
              UIApplication.sharedApplication().applicationIconBadgeNumber = 0
          }
      

      【讨论】:

        【解决方案4】:

        这不起作用的原因:

        [[UIApplication sharedApplication] setApplicationIconBadgeNumber:[UIApplication sharedApplication].applicationIconBadgeNumber -1];
        

        是它没有减少徽章编号,而是将其设置为-1。文档说将徽章编号设置为 0 会隐藏它,但负数也会隐藏它。

        要减少徽章编号,至少在它达到 0 之前这样做:

        [UIApplication sharedApplication].applicationIconBadgeNumber--;
        

        applicationIconBadgeNumber 可以用作普通变量,例如:

        [UIApplication sharedApplication].applicationIconBadgeNumber = 100;
        [UIApplication sharedApplication].applicationIconBadgeNumber++;
        [UIApplication sharedApplication].applicationIconBadgeNumber += 2;
        

        如果您希望它可见,请确保它保持正面。

        【讨论】:

          【解决方案5】:

          [[UIApplication sharedApplication] setApplicationIconBadgeNumber:[dict[@"badge"] integerValue]]+=[UIApplication sharedApplication].applicationIconBadgeNumber;

          【讨论】:

          • (- = ) 应该在那里
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-30
          • 2012-02-17
          • 2013-02-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多