我正在嘗試插入一個新行,并立即使其成為第一回應者。
使用.insertRows()似乎異步執行,即使有.none。為影片。這意味著當我呼叫 時cellForRow(at:),它回傳 nil。
在呼叫之前等待插入完成的最佳方法是becomeFirstResponder什么?
這不起作用:
self.tableView.insertRows(at: [newIndex], with: .none)
self.tableView.cellForRow(at: newIndex)?.becomeFirstResponder() //Returns nil
uj5u.com熱心網友回復:
為什么必須使用 .insertRaws()?我的意思是,你為什么不在向陣列添加新專案后呼叫 reloadData() ?
self.array.append(newData) // Add item to data source
self.tableView.reloadData() // I am not sure if this is required.
let newIndex = IndexPath(row: self.array.count(), section: 0)
self.tableView.cellForRow(at: newIndex)?.becomeFirstResponder()
uj5u.com熱心網友回復:
將insertRows(at:with:)呼叫置于abeginUpdates()和endUpdates()呼叫之間:
self.tableView.beginUpdates()
self.tableView.insertRows(at: [newIndex], with: .none)
self.tableView.endUpdates()
self.tableView.cellForRow(at: newIndex)?.becomeFirstResponder()
無論如何,我不太喜歡以這種方式讓作為第一回應者的單元格:如果它不可見怎么辦?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/368494.html
上一篇:如何使用tableView.dequeueReusableCell以編程方式向單元格添加單元格樣式?
下一篇:SwiftUITableViewtrailingSwipeActionsConfigurationForRowAt影像全白
