簡體   English   中英

快速更新pickerView的didSelectRow上的圖像

[英]Update image on didSelectRow of pickerView in swift

我正在制作由圖像和標簽組成的客戶pickerView。 它工作得很好。 現在,我想更新所選選取器行的圖像,例如單擊一次勾號,然后將其選中,如果再次單擊,則將取消選中(更改圖像)。 他們也應該這樣做,但它也可以正常工作,但並不順利。 當我選擇該行時,圖像沒有立即更改,但是當我滾動選擇器時,它就更改了。 我注意到這是由於后來調用了viewForRow方法,並未在'didSelectRow'上調用它。 下面是我的viewForRow和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)                    

    }

您缺少呼叫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)
}

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM