2017-11-24 11 views
2

私は、複数のViewControllerを持つBLE iOS(Swift)アプリケーションを開発中です。メインのViewControllerには、接続するBLEデバイスを検出したTableViewControllerにナビゲートするボタンがあります。しかし、私がメインまたは別のビューに戻ると、周辺機器が切断されます。私はTableViewControllerからメインのViewControllerにペリフェラルを渡そうとしましたが、まだ切断されています。BLE異なるViewControllerにナビゲートすると周辺機器が切断される

MainViewController:

var bleManager: BLEManager! 
var peripheral: CBPeripheral! 

override func viewDidLoad() { 
    bleManager = BLEManager() 
    super.viewDidLoad() 
} 

override func viewWillAppear(_ animated: Bool) { 
    if let peripheral = self.peripheral { 
     do { 
      print("Value from display = \(peripheral.state)") 
     } 
    } 
} 

func setPeripheral(sent: CBPeripheral) { 
    self.peripheral = sent 
} 


@IBAction func manageDevice(sender: UIButton) 
{ 
    // 1. Instantiate TableViewController 
    let tableViewController = self.storyboard?.instantiateViewController(withIdentifier: "TableViewController") as! TableViewController 

    // 2. Set self as a value to delegate 
    tableViewController.delegate = self 

    // 3. Push SecondViewController 
    self.navigationController?.pushViewController(tableViewController, animated: true) 
} 

How to continue BLE activities onto next view controller

答えて

3

はシングルトンクラスを作成し、そこにbleManagerと周辺のプロパティを追加します。

class Shared { 
    private init(){ } 
    static let instance = Shared() 
    var bleManager: BLEManager! 
    var peripheral: CBPeripheral! 
} 

をそして、あなたは別のコントローラを介して同じインスタンスにアクセスできます。

Shared.instance.bleManager = BLEManager() 
関連する問題