我在选择表格视图中的正确单元格时遇到问题。我的代码是:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var MyTableView: UITableView
var cellsArray = [ "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7"]
override func viewDidLoad() {
super.viewDidLoad()
MyTableView.layer.borderWidth = 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 8
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = MyTableView.dequeueReusableCell(withIdentifier: "cells", for: indexPath)
cell.textLabel?.text = cellsArray[indexPath.row]
return cell
}
@IBAction func MyButtonClick(_ sender: Any) {
let myIndexPath = IndexPath(row: 4 ,section: 0)
let cell = MyTableView.cellForRow(at: myIndexPath)
cell?.backgroundColor = UIColor.yellow
}
This is the application when it's running
问题是,当我按下按钮而不滚动表格视图时,什么也没发生,但是如果我向下滚动,则当前视图包括标记为4/5/6的单元格,然后按下按钮,标记为“ 4”和“ 0”的两个单元格都有其背景色设置为黄色。
我最终想知道为什么会这样,因为它不仅影响背景,例如在执行for循环以求单元格高度求和以自动更改表格视图的高度时,不在视图中的单元格会使程序崩溃返回null。
任何帮助将不胜感激,这是为什么!
在查看4时按下按钮后
最佳答案
单元正在重用-您只能引用可见的单元。
let myIndexPath = IndexPath(row: 4 ,section: 0)
let cell = MyTableView.cellForRow(at: myIndexPath)
cell?.backgroundColor = UIColor.yellow
当第4行不可见时,您的
cell
为nil。如果要更改单元格中的行为,则应修改模型并在UITableView上调用例如reloadData
。关于ios - Swift 4表 View 获取错误的单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50334984/