gpt4 book ai didi

ios - 一旦出现 uicontroller 扫描蓝牙设备

转载 作者:行者123 更新时间:2023-11-28 12:46:54 25 4
gpt4 key购买 nike

我是编程新手,可能无法用恰当的术语来描述。

我正在编写一个应用程序,一旦它出现在屏幕上,我就想要它。它会自动扫描设备 5 秒,然后放在表格 View 上以显示详细信息。

我还写了一个 Action 方法来响应 UIBarButtonItem 的重新加载。 Action 方法工作正常。它将设备的信息放在单元格上。

因此,我将此操作方法放入 viewDidLoad block 中,以便在加载 View 后扫描蓝牙设备。 但它不起作用。但我知道当 Controller 弹出时, Action 方法正在运行。但它没有显示有关单元格的任何信息。我需要按重新加载以扫描并在单元格上列出。

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)
}

Controller 弹出后如何扫描并列在 table 上?

谢谢。

最佳答案

尝试添加 CBCentralManagerDelegate 方法:

func centralManagerDidUpdateState(central: CBCentralManager) {
if central.state == CBCentralManagerState.PoweredOn {
startScan()
}
}

并添加这样的方法:

func startScan() {
self.timer?.invalidate()
self.centralManager?.scanForPeripheralsWithServices(nil, options: nil)
self.timer = NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: "stopScan", userInfo: nil, repeats: false)
}

func stopScan() {
self.centralManager?.stopScan()
}

如果您想在每次 View Controller 出现在屏幕上时运行任何方法 - 从 viewWillAppear 或 viewDidAppear 调用这些方法。viewDidLoad 仅在您加载 View Controller 时调用一次。

关于ios - 一旦出现 uicontroller 扫描蓝牙设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37794996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com