我在表格视图中选择正确的单元格时遇到问题。我的代码是:
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
问题是当我按下按钮而不滚动tableview时没有任何反应,但是如果我向下滚动所以当前视图包含标记为4/5/6的单元格并按下按钮,标记为“4”和“0”的单元格都有他们的背景颜色设置为黄色。
我最终想知道为什么会出现这种情况,因为它影响的不仅仅是背景,比如在做一个for循环来对单元格高度求和以自动更改tableview的高度时,不在视图中的单元格会崩溃程序,因为它返回null。
任何帮助都会非常感激,为什么会这样!
按下按钮时4在视图中
答案 0 :(得分:0)
正在重复使用细胞 - 您只能参考可见细胞。
let myIndexPath = IndexPath(row: 4 ,section: 0)
let cell = MyTableView.cellForRow(at: myIndexPath)
cell?.backgroundColor = UIColor.yellow
在您的情况下,当行号4不可见时, cell
为零。如果您想更改单元格中的行为,则应修改模型并在UITableView上调用示例reloadData
。