2013-03-04 97 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 
    }