[英]SelectRow UIPickerView Doesn't Respond
pickerView.selectRow 应该触发并且根据surveyType应该改变cellTypes。
func configureFixedTop(indexPath: IndexPath) -> SurveyTopTableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SurveyTopTableViewCell") as! SurveyTopTableViewCell
cell.delegate = self
cell.setupPickerView()
cell.setupDefaultViews()
// if it is editing check inside if let
if let editSurvey = survey {
print("editSurvey.surveyTypeId!",editSurvey.surveyTypeId!)
cell.pickerView.reloadAllComponents()
pickerChanged(type: SurveyTypes(rawValue: editSurvey.surveyTypeId!)!)
cell.surveyTypeTextField.text = SurveyTypes(rawValue:editSurvey.surveyTypeId!)?.title
cell.questionEntryTextField.text = editSurvey.question!
}
cell.parentVC = self
return cell
}
func pickerChanged(type: SurveyTypes) {
surveyType = type
switch type {
case .multiAnswer: cellTypes = [.fixedTop, .multiAnswer]
case .singleAnswer: cellTypes = [.fixedTop, .singleAnswer]
case .textAnswer: cellTypes = [.fixedTop, .textAnswer]
}
}
enum SurveyTypes: Int, CaseIterable {
case multiAnswer = 2
case singleAnswer = 1
case textAnswer = 3
var title: String {
switch self {
case .multiAnswer: return "Çoktan seçmeli"
case .singleAnswer: return "Tekli Değerlendirme"
case .textAnswer: return "Kısa Metin"
}
}
}
尽管它进入pickerChanged并了解哪个surveyType(在本例中为.multiAnswer),但它不会将cellTypes更改为.multiAnswer,因此我只在tableView中看到.fixedTop单元格。
我应该更新什么才能正确查看 case.multiAnswer。
另一方面,当我从 didSelectRow 函数更改选择器时,它确实改变了我的surveyType
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
surveyTypeTextField.text = SurveyTypes(rawValue: surveyTypes[row])?.title
surveyTypeTextField.resignFirstResponder()
self.delegate?.pickerChanged(type: SurveyTypes(rawValue: surveyTypes[row])!)
parentVC.tableView.reloadData()
}
上面的这个函数确实触发了pickerChanged,我正确地看到了surveyType。 再加上 tableView.reloadData() 到最后if let editSurvey = survey {
导致有一个空的tableview没有两者
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.