У меня есть tableview, и его настраиваемая tableviewcell выглядит так ...
Tableviewcell показан здесь
Теперь флажок с именем option
устанавливается с использованием делегатов и доступ к нему осуществляется в контроллере просмотра, вот так ...
func optionBtnTapped(cell: UpdatingListTableViewCell) {
if let indexPath = standardsProceduresView.tableview?.indexPath(for: cell) {
cell.optionBtn.isSelected = !cell.optionBtn.isSelected
if(cell.optionBtn.isSelected)
{
//VALUE SET SINCE CHECKBOX ENABLED
... ... ...
let image = UIImage(named: "checkbox.png") as UIImage?
cell.optionBtn.setImage(image, for: UIControl.State.normal)
}
else
{
let image = UIImage(named: "square.png") as UIImage?
cell.optionBtn.setImage(image, for: UIControl.State.normal)
}
}
}
Аналогично устанавливается флажок done
и planned
(как показано на изображении выше).
1015 * выглядит так ...
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UpdatingListTableViewCell = self.standardsProceduresView.dequeueReusableCellWithIdentifier(identifier: "cellClass") as! UpdatingListTableViewCell
cell.selectionStyle = .none
cell.delegate = self
//Setting up values from an array into the label named 'Risk assessment done' in the tableviewcell
resolutionDic = resolutionDetailsArray[indexPath.row] as! NSMutableDictionary
cell.stdProcedLbl.text = "\(resolutionDic["Resolution"]!)"
return cell
}
Теперь проблема в том, что если я устанавливаю флажок в первой ячейке, а затем прокручиваю вниз, некоторые другие флажки в некоторых других ячейках также отображаются выбранными. То же самое происходит и с флажками «Выполнено» и «Запланировано». То же самое происходит и с текстовым полем с именем whoTextfield
(показано на рисунке). Если я ввожу что-то в первой ячейке и прокручиваю вниз, текст появляется в ячейках, в которые я не вводил текст ...
Ссылаются на другие сообщения SO с аналогичной проблемой. Но не удалось найти решение этой проблемы ...
EDIT: это мой код для tableviewcell ..
class UpdatingListTableViewCell: UITableViewCell, UITextFieldDelegate {
@IBOutlet weak var optionBtn: RoundButton!
@IBOutlet weak var plannedBtn: RoundButton!
@IBOutlet weak var doneBtn: RoundButton!
@IBOutlet weak var whoTextField: UITextField!
@IBOutlet weak var stdProcedLbl: UILabel!
@IBOutlet weak var nameLbl: UILabel!
var delegate: updatingDelegate?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
plannedBtn.isEnabled = false
doneBtn.isEnabled = false
whoTextField.delegate = self
whoTextField.autocorrectionType = .no
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
@IBAction func optionBtnTapped(_ sender: RoundButton) {
if let _ = delegate {
delegate?.optionBtnTapped(cell: self)
}
}
@IBAction func plannedBtnTapped(_ sender: RoundButton) {
if let _ = delegate {
delegate?.plannedBtnTapped(cell: self)
}
}
@IBAction func doneBtnTapped(_ sender: RoundButton) {
if let _ = delegate {
delegate?.doneBtnTapped(cell: self)
}
}
}