在IOS 10.x
下一切正常我在应用程序中有一个表,可以扫描可用的BLE设备并将每个设备显示在一个单元格中。
当用户点击某个单元格时,它应该更新textLabel.text属性以说明"请稍候..."。连接后,它应调用tableView.reload data()方法,单元格应列出设备名称。如果设备的状态已连接,则应说连接。
更新到IOS 11后,一切似乎都有效,但我无法更新单元格中的文本以指示“已连接”。"它会一直显示"请等待"点击单元格时的消息。
查看控制器类定义...
class BeanConnect: UIViewController, UITableViewDelegate, PTDBeanManagerDelegate, PTDBeanDelegate {
@IBOutlet var tableView: UITableView!
let beanList=BeanList()
var beanManager: PTDBeanManager?
var waitingToConnect: PTDBean?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tableView.register(UITableViewCell.self,forCellReuseIdentifier: "Cell")
tableView.delegate=self
tableView.dataSource=beanList
beanManager = PTDBeanManager()
beanManager!.delegate = self
//tableView.reloadData()
}
这是我触摸单元格时更新textLabel的位置。这很好。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell=tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath as IndexPath)
cell.textLabel?.text=beanList.items[indexPath.row].name + " Please wait..."
if (myBean != nil && myBean?.state==PTDBleDeviceState.connectedAndValidated) {
let waitingBean=beanList.items[indexPath.row]
self.waitingToConnect=waitingBean
var e: NSErrorPointer
print("*******now disconnecting from bean********")
beanManager?.disconnect(fromAllBeans: e)
}else {
myBean=beanList.items[indexPath.row]
connectToBean(bean: myBean!)
}
}
这是更新单元格的部分(在单独的模块中)。请注意,调试行表示" ConnectedandValidated"正在被触发。一切似乎都有效,除非该死的标签没有更新。
extension BeanList: UITableViewDataSource {
@available(iOS 2.0, *)
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell=tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath as IndexPath)
let item=items[indexPath.row]
print("debug code building the table")
switch item.state {
case PTDBleDeviceState.attemptingConnection:
cell.textLabel!.text=item.name + " Connecting..."
print("debug code attemptingConnection")
case PTDBleDeviceState.attemptingValidation:
cell.textLabel!.text=item.name + " Validating..."
print("debug code attemptingValidation")
case PTDBleDeviceState.connectedAndValidated:
cell.textLabel!.text=item.name + " Connected!"
print("debug code Connected")
print(item.name + " Connected!")
default:
cell.textLabel!.text=item.name
print("debug code default case")
}
return cell
}
任何帮助将不胜感激! TX
答案 0 :(得分:0)
你不应该在" didSelect"中出列新单元格。使用tableView.cellForRow并获取现有单元格。