在swift中更新pickerView的didSelectRow上的图像

问题描述:

我正在制作一个由图像和标签组成的客户pickerView。它工作得很好。现在我想更新所选择的选择器行的图像,如果点击一次,那么它将被检查,如果再次点击它将被取消选中(更改图像)。它也在工作,但并不顺利,它们应该如此。当我选择行时,图像并没有立即得到改变,但是当我滚动选取器时,它就发生了变化。我注意到这是由于'viewForRow'方法后来被调用的事实,它没有在'didSelectRow'上调用。下面是我的viewForRow和DidSelectRow的代码。在swift中更新pickerView的didSelectRow上的图像

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { 

     let customeView = UIView(frame: CGRect(x: 0, y: 0, width: self.dropDown.rowSize(forComponent: 0).width, height: 30)) 

     // for label 
     let label = UILabel(frame: CGRect(x: 0, y: 0, width: customeView.frame.width, height: 30)) 
     label.textAlignment = .left 
     label.text = FilteredQuestionNames[row]  

     // for tick image, array contains all the images 
     let image = FilteredQuestion_Images[row] 
     imageView = UIImageView(image: image) 

     imageView?.frame = CGRect(x: self.dropDown.rowSize(forComponent: 0).width - 36 , y: 0, width: 26, height: 26) 

     customeView.addSubview(imageView!) 
     customeView.addSubview(label)//pickerLabel) 

     return customeView//pickerLabel 

    } 

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {   

       if selectedRows.contains(QuestionsText.text!){ 

        self.imageName = "Unchecked Checkbox-26" 

       }else{ 
       selectedRows.append(QuestionsText.text!) // question added in selected question 

       self.imageName = "Checked Checkbox-26"     
       FilteredQuestion_Images[row] = UIImage(named: "Checked Checkbox-26")! 

        let image = FilteredQuestion_Images[row] 
        imageView = UIImageView(image: image)      

    } 
+1

重装选择器视图。 – Venkat

你缺少电话pickerView.reloadComponent(component: yourComponentIndex)

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {   

       if selectedRows.contains(QuestionsText.text!){ 

        self.imageName = "Unchecked Checkbox-26" 

       }else{ 
       selectedRows.append(QuestionsText.text!) // question added in selected question 

       self.imageName = "Checked Checkbox-26"     
       FilteredQuestion_Images[row] = UIImage(named: "Checked Checkbox-26")! 

        let image = FilteredQuestion_Images[row] 
        imageView = UIImageView(image: image)      

    } 
    pickerView.reloadComponent(component: component) 
} 

希望这有助于在didSelectRow结束

+0

明白了,谢谢! –