繁体   English   中英

SelectRow UIPickerView 没有响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM