仅选择行1次

时间:2018-11-06 20:55:57

标签: ios swift uitableview

我有tableView个聊天应用程序的频道。用户启动应用程序时,我需要选择第一个频道作为默认频道。最初,我使用willDisplay,并且可以使用,但是现在我决定更新未读频道的颜色(未读消息的功能)。每次我呼叫tableView.reloadData()时,它都是选择第一个频道。由于某些原因,selectRowwillDisplay不兼容。

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)
    }
}

当用户启动应用程序时,我应该如何只选择一次第一个频道?

1 个答案:

答案 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
}