0
나는 라벨과 이미지로 구성된 pickerView가 있습니다. 나는 pickerview가 그 특별한 것에 도청 될 때 저 심상을 새롭게하고있다. 하지만 이미지의 변화를 보여 주려면 pickerView를 다시로드해야합니다. 내가 다시로드하면 첫 번째 행으로 돌아갑니다. pickerView의 특정 행만 다시로드 할 수있는 방법이 있습니까?신속한 PickerView의 특정 행 다시로드
코드 : ViewForRow의
if selectedRows.contains(contactPerson.text!) {
FilteredQuestion_Images[row] = UIImage(named: "Unchecked Checkbox-26")!
let image = FilteredQuestion_Images[row]
imageView = UIImageView(image: image)
if let itemToRemoveIndex = selectedRows.index(of: contactPerson.text!) {
selectedRows.remove(at: itemToRemoveIndex)
ContactPersons_Multiple.remove(at: itemToRemoveIndex)
}
self.dropdownPicker.reloadAllComponents()
}else {
selectedRows.append(contactPerson.text!)
self.imageName = "Checked Checkbox-26"
FilteredQuestion_Images[row] = UIImage(named: "Checked Checkbox-26")!
let image = FilteredQuestion_Images[row]
imageView = UIImageView(image: image)
self.dropdownPicker.reloadAllComponents()
}
}
코드 :
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.dropdownPicker.rowSize(forComponent: 0).width, height: 30))
// for label
let label = UILabel(frame: CGRect(x: 0, y: 0, width: customeView.frame.width - 35, height: 30))
label.textAlignment = .left
label.text = self.ContactPers[row]
if FilteredContactsSelected == true {
label.text = FilteredContactsNames[row]
}
let image = FilteredQuestion_Images[row]//UIImage(named: imageName)
imageView = UIImageView(image: image)
imageView?.frame = CGRect(x: self.dropdownPicker.rowSize(forComponent: 0).width - 36 , y: 0, width: 26, height: 26)
customeView.addSubview(imageView!)
customeView.addSubview(label)//pickerLabel)
return customeView//pickerLabel
}
정확히 어디에서 호출할까요? –
'UIPickerViewDelegate'의''public function pickerView (_ pickerView : UIPickerView, viewForRow 행 : Int, forComponent 컴포넌트 : Int, 재사용 뷰 : UIView?) -> UIView' 메서드를 구현 했습니까? –
예. 사용하고 있습니다. –