2013-05-30 6 views
1

Я получаю уровень заряда батареи моего устройства bluetooth le (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

Существует множество способов выполнить это с помощью делегатов или назначить свойства в представленииViewControllers/destinationViewControllers, но поскольку я не знаю вашего потока приложений, я дам вам способ, который должен работать с любой настройкой, которую вы имеете. Просто обновите batteryLevel в вашем ViewController, что является peripheralDelegate затем просто сохранить значение в NSUserDefaults:

- (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]; 
} 
Смежные вопросы