2013-03-04 29 views
5

tôi sử dụngiOS, biểu tượng giảm huy hiệu số

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

để giảm các số huy hiệu biểu tượng, nhưng thực sự nó được xóa. khi tôi nhấn nút trang chủ, số lượng huy hiệu không có ở đó.

NHƯNG, nếu tôi cố gắng một giá trị cố định như thế này

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:4]; 

, số lượng huy hiệu có như mong đợi.

Vì vậy, câu hỏi là: Tại sao

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

không làm việc?

+0

Đoạn mã này hoạt động như mong đợi đối với tôi (XCode 4.6, iOS 6.1 Simulator, đặt bên trong 'Phương pháp viewDidLoad' một cái nhìn khiển của). Vì vậy, tôi nghi ngờ có thể có một số thứ khác gây ra vấn đề này. Bạn có thể cung cấp thêm thông tin, giống như nơi bạn đã đặt dòng mã này, và giá trị của '[UIApplication sharedApplication] .applicationIconBadgeNumber' ở đó là gì? –

+0

@RoxDorentus Mã được đặt trong AppDelegate bên trong didFinishLaunchingWithOptions. –

Trả lời

4

Tại sao bạn không chỉ:

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

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:numberOfBadges]; 
0

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:[UIApplication sharedApplication].applicationIconBadgeNumber -1]; là sai lầm của bạn

[UIApplication sharedApplication].applicationIconBadgeNumber -1 

không hoạt động hợp lệ để làm ở đó.

Sử dụng biến thể tạm thời để thay đổi số lượng huy hiệu, nếu bạn bị nhầm lẫn theo cách khác.

Chỉnh sửa: Sử dụng nó như thế này.

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

Cùng một vấn đề, nó bị xóa không giảm. –

+0

Sau đó, bạn vẫn đang sử dụng thao tác bị lỗi. Đọc chỉnh sửa của tôi –

-1

Lý do này không làm việc:

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

là nó không decrementing số huy hiệu, nó đặt nó vào -1. Các tài liệu nói rằng thiết lập số hiệu để 0 giấu nó, nhưng số âm cũng làm.

Để giảm các số huy hiệu, ít nhất là cho đến khi nó đạt đến 0 làm điều này:

[UIApplication sharedApplication].applicationIconBadgeNumber--; 

applicationIconBadgeNumber thể được sử dụng như là một biến bình thường, ví dụ:

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

Chỉ cần chắc chắn rằng nó vẫn tích cực nếu bạn muốn nó được hiển thị.

-2

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: [dict [@ "huy hiệu"] integerValue]] + = [UIApplication sharedApplication] .applicationIconBadgeNumber;

+0

(- =) phải có – kunal

0

Hãy thử với điều này trong nhanh chóng cho giảm

let currentCountStr = UIApplication.sharedApplication().applicationIconBadgeNumber.description 
    let currentCount = Int(currentCountStr) 
    if(currentCount > 0) { 
     UIApplication.sharedApplication().applicationIconBadgeNumber = currentCount! - 1 
    } else { 
     UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
    } 
Các vấn đề liên quan