iOS:使用 corebluetooth 库从不同的视图控制器进行通信

Posted

技术标签:

【中文标题】iOS:使用 corebluetooth 库从不同的视图控制器进行通信【英文标题】:iOS:Communicate from different view controllers using corebluetooth library 【发布时间】:2015-01-26 07:25:50 【问题描述】:

我正在做核心蓝牙应用程序。并使用corebluetooth框架开发了该库。我有4个视图控制器。在第一个视图控制器中,当我单击扫描按钮时,我有扫描按钮,第二个屏幕出现扫描设备,这些设备出现在表格视图中。当我单击表视图外围设备连接并提供其服务和特性等信息时。当我回到第一个视图控制器时,我有一个称为电池状态的按钮,当我单击该按钮时,它应该从连接的第二个视图控制器调用电池信息外围。 以下是我在第二个视图控制器中的代码

     -(void)viewdidload
      coreBle = [[CoreBLE alloc] init];   
     coreBle.delegate = self;
      

用于连接设备

        - (IBAction)Go:(id)sender
      
     if (periperal==nil) 
     UIAlertView *alert=[[UIAlertView alloc]initWithTitle:nil    
     message:@"Select watch to connect"
                                                delegate:self   
     cancelButtonTitle:@"Ok" otherButtonTitles: nil];
    [alert show];
      
    else

   [coreBle connectToPeripheralAt:[periperal integerValue]];
    NSLog(@"peripheral connected is %@",periperal);
    HUD.labelText = @"Connecting...";

    [HUD showWhileExecuting:@selector(connectingtask) onTarget:self 
    withObject:nil animated:YES];

     

     

从以下索引路径值处选择行连接外围设备

    - (void)tableView:(UITableView *)tableView   
   didSelectRowAtIndexPath:(NSIndexPath   *)indexPath

    

   deviceselected= [NSString stringWithFormat:@"Table cell pressed.   
   (%d)", indexPath.row];
   periperal=[NSString stringWithFormat:@"%d",indexPath.row];
    

上面的代码用于连接第二个视图控制器中的外围设备。相同的外围设备应该连接在第一个视图控制器中。这样我就可以从中检索值。请帮助我

【问题讨论】:

【参考方案1】:

为什么不将 CoreBLE 代码单独移动到新类中的单个实例中。而在四个视图控制器中,只需调用相关方法即可获取有关 CoreBLE 的信息。因为在你的ui操作中,你必须遵循四个视图控制器的顺序。

【讨论】:

Corble 类在一个充当库的类中,并且从该类中仅检索我需要的方法,并且在执行此操作时,该应用程序崩溃了,因为给出的值为 [CBCentralManager connectPeripheral:options:], /SourceCache /CoreBluetooth/CoreBluetooth-242.1/CBCentralManager.m:328 2015-01-26 13:58:44.170 SmartWatch[1358:266327] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:外围设备!= 无'

以上是关于iOS:使用 corebluetooth 库从不同的视图控制器进行通信的主要内容,如果未能解决你的问题,请参考以下文章

CoreBluetooth [警告] 未知错误:311 在 iOS 中使用 CoreBluetooth 框架重复连接和断开连接时发生

使用 CoreBluetooth 通过 iOS 设备连接到 Windows 10

在后台使用 iBeacon 或 CoreBluetooth 识别 iOS 设备

iOS Swift - CoreBluetooth 无法发送数据

iOS 和 CoreBluetooth 需要低能耗吗?

iOS CoreBluetooth 获取唯一的外设 ID