2013-05-30 98 views
1

我正在获取蓝牙设备(batteryLevel)的电池电量,这是一个视图中的浮点数。我想将它传递给另一个视图以在文本字段中显示它。鉴于一个从一个视图控制器获取数据到另一个视图

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:  
    (CBCharacteristic *)characteristic error:(NSError *)error 
    {[self.testPeripheral readValueForCharacteristic:mycharacteristic]; 

    char batlevel; 
    [characteristic.value getBytes:&batlevel length:1]; 
    self.batteryLevel = (float)batlevel; 

    NSLog(@"level;%f",batteryLevel);} 

码这给了我像80.00000

值我想把这变成另一个视图中显示。

我曾尝试在view2.h文件我已经把

view1 *t 

然后

- (void) batteryIndicatorTimer:(NSTimer *)timer { 
    TIBLEUIBatteryBar.progress = t.batteryLevel/100; 
    [t readBattery:[t testPeripheral]];    // Read battery value of keyfob again 
    NSLog(@"t.batterylevel:%f",t.batteryLevel); 
} 

,但我不为t.batteryLevel

得到的值我是什么做错了,我该怎么做?

+0

这不是真的与CoreBluetooth有关,这是一个架构问题。创建一个通信类,将其设置为共享实例。 – Larme

回答

3

在presentationViewControllers/destinationViewControllers中使用委托或赋值属性有很多方法可以完成此操作,但由于我不知道您的应用程序流,因此我会给您一种适用于您的设置的方法。只需在您的viewController那是peripheralDelegate然后只需将值保存到更新NSUserDefaults的batteryLevel:

- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic: 
(CBCharacteristic *)characteristic error:(NSError *)error 
{ 
    //Grab your battery value and store in float 
    //Then just save to defaults so you can access wherever.. Keep overwriting this value each time you update 

    [[NSUserDefaults standardUserDefaults]setFloat:batteryVal forKey:@"battery_level"]; 

} 

然后里面的其他的viewController只是内部分配或viewWillAppear中的东西值。

-(void)viewWillAppear:(BOOL)animated 
{ 
    float batteryLevel = [[NSUserDefaults standardUserDefaults]floatForKey:@"battery_level"]; 
    self.yourTextField.text = [NSString stringWithFormat:@"%f",batteryLevel]; 
} 
相关问题