iTableView在ios 11中闪烁,在ios 10.2中正常工作
当我点击特定的单元格时,我试图更新我的单元格大小。我的表在iOS 10.2中得到了完美的更新,但当我在iOS 11上运行代码时,我的表会闪烁。我在iOS 11中也得到了警告iTableView在ios 11中闪烁,在ios 10.2中正常工作,ios,swift,ios11,ios10.2,ios11.3,Ios,Swift,Ios11,Ios10.2,Ios11.3,当我点击特定的单元格时,我试图更新我的单元格大小。我的表在iOS 10.2中得到了完美的更新,但当我在iOS 11上运行代码时,我的表会闪烁。我在iOS 11中也得到了警告 -[ui应用程序状态]必须从主线程使用。 所以,我在调度队列中重新加载了我的表,但什么也没发生。我有多层次的XIB,就像我有一个单元格,其中有一个表,该表正在注册另一个单元格,该单元格在单击时展开。 下面是我的代码示例,当高度扩展我的主表闪烁时 func expandMessageTable(height : CGFloat
-[ui应用程序状态]必须从主线程使用。
所以,我在调度队列中重新加载了我的表,但什么也没发生。我有多层次的XIB,就像我有一个单元格,其中有一个表,该表正在注册另一个单元格,该单元格在单击时展开。
下面是我的代码示例,当高度扩展我的主表闪烁时
func expandMessageTable(height : CGFloat,expendedRow:Int){
self.expandMessageHeight = height
self.msgExpRow = expendedRow
let row = cellMenuArr.index(of:"MessageXIB")
let path = IndexPath(row: row!, section: 0)
print(path)
homeTblView.reloadRows(at: [path], with: .fade)
}
下面是我用来重新加载单元格的优秀工作代码-
DispatchQueue.main.async(execute: {
UIView.performWithoutAnimation {
self.tableView?.beginUpdates()
let contentOffset = self.tableView?.contentOffset
self.tableView?.reloadRows(at: [IndexPath(row: j, section: 0)], with: .automatic)
self.tableView?.setContentOffset(contentOffset!, animated: false)
self.tableView?.endUpdates()
}
})
希望有帮助。当它实际闪烁时。当你重新加载它的时候?不要重新加载完整的表,只需重新加载更新的单元格。当我在索引路径处重新加载特定行时。您能告诉我们导致问题的代码吗?您需要提供一个代码示例,以再现闪烁。对于另一个问题,您正在从后台线程调用UIApplication.shared.applicationState。使用DispatchQueue.main.async{(…)}在主线程上调度它。我已经更新了我的查询,请看一看。我正在使用cell XIB。我在那张表里只有一个部分。