Я использую несколько небольших табличных представлений.При нажатии на строку я просто хочу, чтобы она показала небольшую галочку, поэтому в источник данных TableView я добавил этот метод:
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Did Select Row at \(indexPath.row)")
tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
}
Довольно просто, но когда выбор сделан в tableView, всесодержимое таблицы исчезнет, и галочка не будет сделана.Я явно вызвал функцию didSelectRowAt, и она работала нормально (в ячейке появилась небольшая галочка, и она напечатала оператор print).
Просто интересно, есть ли у кого-нибудь объяснение этому странному поведению.Вот полное определение Delegate / DataSource (я не использовал контроллер, потому что он не является главной целью приложения).
public class TableController : NSObject, UITableViewDataSource,
UITableViewDelegate {
private var data : [String]
private var height : CGFloat
init(_ data : [String], cellHeight : CGFloat) {
self.data = data
self.height = cellHeight
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
return data.count
}
public func tableView(_ tableView: UITableView, cellForRowAt
indexPath: IndexPath) -> UITableViewCell {
print("-cell for row at \(indexPath.row) \n")
let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
cell.textLabel!.text = data[indexPath.row]
return cell
}
public func tableView(_ tableView: UITableView, didSelectRowAt
indexPath: IndexPath) {
print("Did Select Row at \(indexPath.row)")
tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
}
}