xcode - 导航栏上的蓝牙工作和不工作
问题描述
你好
我有一个应用程序,它由 1 个标签栏控制器中的 3 个导航控制器组成。
该应用程序必须在每个视图中连接和断开蓝牙。
所以我在导航栏中添加了一个按钮来连接蓝牙功能。
并使用串口连接蓝牙。
但是导航栏中的按钮有时可以工作,有时不能。
开始 -> V1 连接按钮 -> V1 按钮 -> V2 -> V2 按钮:不起作用。(V1 和 V2 上的按钮功能相同,向连接的设备发送“s”)
开始 -> V2 -> V1 Connect Btn -> V2 -> V2 按钮:有效。
开始 -> V3 -> V3 Connect Btn -> V1 -> V1 按钮:有效。
开始 -> V3 -> V3 Connect Btn -> V1 -> V1 Button -> V2 : 蓝牙断开
开始 -> V2 -> V2 Connect Btn -> V3 : 蓝牙断开
当我在图像中绘制时,原始应用程序由 3 个视图组成,只有 V2 有一个导航栏来连接蓝牙。
因此,当我向 V1 和 V2 添加导航栏时,我将 V2 中的功能复制到 V1、V3。
以下是views3中的一些常见代码。
import UIKit
import Charts
import CoreBluetooth
import QuartzCore
class GraphViewController: UIViewController, BluetoothSerialDelegate{
@IBOutlet weak var barButton: UIBarButtonItem!
@IBOutlet weak var navItem: UINavigationItem!
serial = BluetoothSerial(delegate: self)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
@IBAction func barButtonPressed(_ sender: Any) {
if serial.connectedPeripheral == nil {
performSegue(withIdentifier: "ShowScanner3", sender: self)
// *********** V1 : "ShowScanner2, V2 : "ShowScanner ***************
} else {
serial.disconnect()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func serialDidChangeState() {
if serial.centralManager.state != .poweredOn {
dismissKeyboard()
let hud = MBProgressHUD.showAdded(to: view, animated: true)
hud?.mode = MBProgressHUDMode.text
hud?.labelText = "Bluetooth turned off"
hud?.hide(true, afterDelay: 1.0)
}
}
func serialDidDisconnect(_ peripheral: CBPeripheral, error: NSError?) {
reloadView()
dismissKeyboard()
let hud = MBProgressHUD.showAdded(to: view, animated: true)
hud?.mode = MBProgressHUDMode.text
hud?.labelText = "Disconnected"
hud?.hide(true, afterDelay: 1.0)
}
}
我将 segue 连接到导航“以模态方式呈现”,并在 V2 segue 之后命名为“Show Scanner1”和“Show Scanner3”。
我认为 segue 不一样(黄色箭头),它可能会产生问题。
但这是荒谬的想法。
我怎么解决这个问题?
我必须单独传递数据吗?
还是有我错过的代码?
解决方案
推荐阅读
- c# - ListView 不删除 Xamarin.Forms 中的项目。我已将 ObservableCollection 分配给 ListView itemsource。MVVM
- sql - SQL - 将多列合并为一列,以便于选择和索引
- javascript - 我必须单击一个按钮两次才能让事件处理程序触发 javascript
- sql - 如何在 Oracle SQL 中使用 LIKE 运算符
- vue.js - Vuetify v-data-table 没有完全加载数据:空白行
- stackdriver - 在 Stackdriver 中转换值和更改单位
- c - 了解为什么它在数组中找不到重复项
- sql - 如何允许参数传递空白条目和逗号分隔的多条目?
- silverstripe - Silverstripe - 从博客小部件获取父页面字段
- amazon-redshift - Redshift同时插入到混合id表和另一个表中