私はプログラミングの新機能です。記述するために適切な用語を使用できない場合があります。uicontrollerに一度表示されたBluetoothデバイスをスキャンする
私は、画面に表示されたらアプリが欲しいアプリを書いています。自動的にデバイスを5秒間スキャンし、テーブルビューを表示して詳細を表示します。
また、UIBarButtonItemのリロードに対応するアクションメソッドを書きました。 アクションメソッドは正常に動作します。デバイスの情報をセルに格納します。
ですから、このアクションメソッドをviewDidLoadブロックに入れて、ビューを読み込んだ後にBluetoothデバイスをスキャンします。 でも動作しません。しかし、コントローラがポップアップすると、アクションメソッドが実行されていることがわかります。ただし、セルに関する情報は表示されません。スキャンしてセルに一覧表示するには、リロードを押す必要があります。
override func viewDidLoad() {
super.viewDidLoad()
btCentralManager = CBCentralManager(delegate: self, queue: nil)
btCentralManager.delegate = self
actionScan(navigationItem.rightBarButtonItem!)
}
リロードボタン:
@IBAction func actionScan(sender: UIBarButtonItem) { // works fine.
sender.enabled = false
navigationItem.title = "Scanning..."
btConnectable.removeAll()
btPeripherals.removeAll()
btRSSIs.removeAll()
NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: #selector(ScanTableViewController.stopScan), userInfo: nil, repeats: false)
btCentralManager.scanForPeripheralsWithServices(nil, options: nil)
}
コントローラがポップアップしたら、どのように私はテーブルの上にスキャンし、リストすることができますか?
ありがとうございました。
func centralManagerDidUpdateState(central: CBCentralManager) {
if central.state == CBCentralManagerState.PoweredOn {
startScan()
}
}
と、このようなメソッドを追加:
私はこのcentralManagerDidUpdateStateメソッドを持っています。私はあなたに続き、このブロックにスキャンアクションメソッドを入れました。それは動作します。どうもありがとうございます。 –