2013-03-04 119 views
5

我用的iOS,减少图标徽章数量

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

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

,但如果我尝试这样

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:4]; 

一个固定值,徽章计数是有预期。

所以,问题是:为什么是

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

不工作?

+0

这段代码按预期工作,我(的XCode 4.6,iOS的6.1模拟器,把一个视图控制器的'viewDidLoad'方法内)。所以我怀疑可能有其他一些事情导致这个问题。你能提供更多的信息,比如你放置这行代码的位置,以及'UIApplication sharedApplication] .applicationIconBadgeNumber'的价值是什么? – 2013-03-04 08:14:21

+0

@RoxDorentus代码放置在didFinishLaunchingWithOptions中的AppDelegate中。 – 2013-03-04 08:32:32

回答

4

你为什么不只是:

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

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:numberOfBadges]; 
0

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

[UIApplication sharedApplication].applicationIconBadgeNumber -1 

没有有效的操作要做。

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

编辑: 像这样使用它。

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

同样的问题,它没有减少。 – 2013-03-04 08:06:57

+0

然后你仍然在使用错误的操作。阅读我的编辑 – 2013-03-04 08:12:00

-1

这不工作的原因:

[[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; 

只要确保它保持积极如果你希望它是可见的。

-2

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

这个
+0

( - =)应该在那里 – kunal 2016-06-10 05:22:16

0

尝试在迅速下降为

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