2017-11-24 17 views
2

여러 ViewControllers가있는 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()