0
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIDevice *device = [UIDevice currentDevice];
    device.batteryMonitoringEnabled = YES;
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryLevelDidChangeNotification" object:device];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryStateDidChangeNotification" object:device];
}

- (void)batteryChanged:(NSNotification *)notification
{
    UIDevice *device = [UIDevice currentDevice];
    NSLog(@"State: %i Charge: %f", device.batteryState, device.batteryLevel);
    batteryLabel.text = [NSString stringWithFormat:@"State: %i Charge: %f", device.batteryState, device.batteryLevel];
}

UILabel は更新されません。電源のイベントは決して発生しません。

私は何か間違ったことをしていますか?

iOS 5.x および 6 のみをサポートする予定です

4

2 に答える 2

0
IBOutlet UILabel *currentBatteryStatusLabel;

上記のコードを次のように変更すると、すべてが機能し始めました。

__weak IBOutlet UILabel *currentBatteryStatusLabel;

なぜそんなに大きな違いがあるのか​​わかりません

于 2012-07-06T12:48:45.803 に答える
0

通知センターが機能しているのにUILabelが更新されていない場合は、通知を受信したときにアプリがバックグラウンドにあるという理由だけではありませんか?

私は次のことを試みます:

  1. uilabelがストーリーボードに正しく接続されているかどうかを確認します
  2. アプリがスリープから復帰したら、uilabelを更新します
于 2012-07-06T10:29:26.080 に答える