我有tableView
个聊天应用程序的频道。用户启动应用程序时,我需要选择第一个频道作为默认频道。最初,我使用willDisplay
,并且可以使用,但是现在我决定更新未读频道的颜色(未读消息的功能)。每次我呼叫tableView.reloadData()
时,它都是选择第一个频道。由于某些原因,selectRow
与willDisplay
不兼容。
let index = self.tableView.indexPathForSelectedRow
self.tableView.reloadData()
self.tableView.selectRow(at: index, animated: false, scrollPosition: .none)
。
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row == 0 {
tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableView.ScrollPosition.none)
}
}
当用户启动应用程序时,我应该如何只选择一次第一个频道?
答案 0 :(得分:3)
您可以通过调用didSelectRowAt
方法
var isSelected = false
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row == 0 && !isSelected {
tableView(tableView,didSelectRowAt: indexPath)
isSelected = true
}
}
另一种选择是将此代码放入viewWillAppear/viewDidAppear
if !isSelected {
tableView.selectRow(at: IndexPath(row:0,section:0), animated: false, scrollPosition: UITableView.ScrollPosition.none)
isSelected = true
}