В вашем классе TableViewCell
почему бы вам не создать элемент источника данных и не переопределить для него didSet
.также в вашем источнике данных для UITableView
я бы порекомендовал массив чего-то большего, чем просто String
.
Я не скомпилировал нижеприведенное, так что это всего лишь идея.
import UIKit
class TableViewCell : UITableViewCell {
var data: Animal? {
didSet {
self.country.text = data.description
if (data.isSelected) {
self.radioButton.setImage(UIImage(named:"check.png"), for: .normal)
} else {
self.radioButton.setImage(UIImage(named:"uncheck.png"), for: .normal)
}
}
}
}
в вашем контроллере представления вам, конечно, придется устанавливать свойство isSelected
при каждом нажатии строки.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var animal = self.animals[indexPath.row]
animal.isSelected = !animal.isSelected
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:TableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! TableViewCell
cell.data = self.animals[indexPath.row]
}
и для вашего Animal
может быть что-то вроде этого:
struct Animal {
var description: String
var isSelected: Bool
}