如何手动快速调用tableview的cellforrowat?

时间:2019-05-13 09:55:37

标签: ios swift uitableview

我正在尝试致电( cellForRowAt indexPath:IndexPath ) 从按钮手动创建方法,如何才能完成该记录,我已经尝试在UITableView上重新加载数据方法。 它没有用。

self.myTableView.reloadData()

为什么我需要这样做是因为我正在尝试从stackoverflow实现一个解决方案,所以解决方案如下所示:

func configureVisibleCells(for tableView: UITableView?, animated: Bool) {
    self.tableView(tableView, configureRowsAtIndexPaths: tableView?.indexPathsForVisibleRows, animated: animated)
}

func tableView(_ tableView: UITableView?, configureRowsAtIndexPaths indexPaths: [Any]?, animated: Bool) {
    for indexPath in indexPaths as? [IndexPath] ?? [] {
        let cell: UITableViewCell? = tableView?.cellForRow(at: indexPath)
        if cell != nil {
            self.tableView(tableView, configureCell: cell, forRowAt: indexPath, animated: animated)
        }
    }
}

func tableView(_ tableView: UITableView?, configureCell cell: UITableViewCell?, forRowAt indexPath: IndexPath?, animated: Bool) {
    // Cell configuration
}

“在

中配置单元格
tableView(_ tableView: UITableView?, configureCell cell: UITableViewCell?, forRowAt indexPath: IndexPath?, animated: Bool) method and call this method in your tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell .

,当您需要重新加载可见单元格时,请调用方法

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell"

现在我要像发布解决方案的人所说的那样称呼它。

1 个答案:

答案 0 :(得分:0)

请勿手动致电cellForRowAtIndexPath。那只能由系统调用,否则将导致不确定的行为。相反,您可以做的是调用一个函数,该函数将依次在内部调用cellForRowAtIndexPath。这是因为在调用cellForRowAtIndexPath之前,系统需要调用其他方法才能正确布局单元格。

例如:行数,节数,高度等。

您可以使用reloadRows(at:with:)的{​​{1}}函数来重新加载可见单元格的行。

看看这个:documentation