Swift4:如何使用reloadData&在UITableViewController中取消选择?

时间:2018-03-14 15:28:19

标签: uitableview swift4 reloaddata reloadrows

我尝试在viewWillApper上的UITableView上重新加载数据。 但deselectRow动画效果不佳。 我该怎么做reloadData&取消选择动画?

override func viewWillAppear(_ animated: Bool) {

    self.tableView.reloadData()
    if let indexPathForSelectedRow = tableView.indexPathForSelectedRow {
            self.tableView.deselectRow(at: indexPathForSelectedRow, animated: true)
    }
    super.viewWillAppear(animated)
}

以下是不同的。淡入淡出动画的持续时间有点短。

override func viewWillAppear(_ animated: Bool) {

    if (self.tableView.indexPathForSelectedRow != nil){
        self.tableView.reloadRows(at: [self.tableView.indexPathForSelectedRow!], with: .fade)
    } 

    super.viewWillAppear(animated)
}

2 个答案:

答案 0 :(得分:1)

您可以直接更新单元格的内容,而不是重新加载整个表格:

setx_tester.py, 16:     x=5
setx_tester.py, 17:     print('the value of x is', x)
the value of x is 5
setx_tester.py, 20:     print('-'*50)
--------------------------------------------------
setx_tester.py, 22:     print(inner_func())
setx_tester.py, 12:     return 15
15
setx_tester.py, 23:     print(func1())
49
setx_tester.py, 24:     print(func2())
abcabcabc
setx_tester.py, 26:     print('-'*50)
--------------------------------------------------
setx_tester.py, 29:     setx.FILENAMES.append(file1.__file__)
setx_tester.py, 30:     print(inner_func())
setx_tester.py, 12:     return 15
15
setx_tester.py, 31:     print(func1())
**path to file**/file1.py, 2:     return 7**2
49
setx_tester.py, 32:     print(func2())
abcabcabc
setx_tester.py, 34:     print('-'*50)
--------------------------------------------------
setx_tester.py, 36:     setx.FILENAMES.pop()
setx_tester.py, 39:     setx.FOLLOWALL = True
setx_tester.py, 40:     print(inner_func())
setx_tester.py, 12:     return 15
15
setx_tester.py, 41:     print(func1())
**path to file**/file1.py, 2:     return 7**2
49
setx_tester.py, 42:     print(func2())
**path to file**/file2.py, 2:     return 'abc'*3
abcabcabc

答案 1 :(得分:0)

我可以通过取消选择行动画更新单元格。

override func viewWillAppear(_ animated: Bool) {
    var indexes = self.tableView.indexPathsForVisibleRows
        var i = 0
        for var records in self.tableView.visibleCells{
            records.textLabel?.text = textDataArray[indexes![i].row]
        i = i + 1
    }
}