selectionStyle
原型单元的
default
(灰色)。由于单元格的数量超出了显示范围,因此第一个单元格可见,最后一个单元格不可见。每个单元格的背景色设置为白色。
第一次测试:
当选定其中一个单元格时,其背景将变为灰色。
isSelected
属性设置为
false
这和预期的一样。
表格视图向上滚动,以便最后的单元格可见。
现在选定单元格后,它将再次移动到第0行,该行已移出tableView的可见区域。这又起作用了。然而:
如果随后向下滚动tableView,使第0行再次可见,
移动的单元格现在有一个灰色背景,就好像它被选中一样
这是我的密码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var tableData = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19"]
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell")!
let row = indexPath.row
cell.textLabel?.text = tableData[row]
cell.backgroundColor = .white
return cell
}
}
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedCell = tableView.cellForRow(at: indexPath)!
selectedCell.isSelected = false
let sourceRow = indexPath.row
let destinationRow = 0
let removedElement = tableData.remove(at: sourceRow)
tableData.insert(removedElement, at: 0)
let destinationIndexPath = IndexPath.init(row: destinationRow, section: 0)
tableView.moveRow(at: indexPath, to: destinationIndexPath)
}
}
我的问题是:
我的密码有问题吗?
或者这是一个iOS错误?如果有,有解决办法吗?
请注意:
当然可以使用
tableView.reloadData()
tableView.moveRow(at:, to:)
. 然后,移动的单元格没有灰色背景。但在本例中,这个动作并没有动画效果,因为我需要在正在开发的应用程序中使用它。
If属性
选择样式
原型单元的
none