我有两个不同的UIPickerView
位于不同的自定义UITableViewCell
中。加载页面时加载的第一个UIPickerView
数据。在第一次选择pickerView
之后加载第二个pickerView
。如何将第一个选定值传递给第二个pickerView
?我无法使用单元格didSelect
,因为PickerView
已经选择了互动,因此无法触发表格视图delegate
。
到目前为止我的代码:
extension ReservationViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == ReservationCell.MakeReservation.rawValue {
//print value --> this is not firing
}
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
if indexPath.row == ReservationCell.MakeReservation.rawValue {
//print value --> this not firing
}
}
}
extension ReservationLocationTableViewCell: UIPickerViewDataSource, UIPickerViewDelegate {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
//Set number of rows in components
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.data.count
}
//Set title for each row
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
// Update textfield text when row is selected
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(data[row]) // I want to pass this value to next cell that contains another PickerView
}
}
我如何将数据值传递给下一个单元格?
答案 0 :(得分:0)
首先将您选择的数据 _,cnts, _ = cv2.findContours(img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
centers = []
if len(cnts)>=2:
for c in cnts:
if cv2.contourArea(c)<100:
continue
if cv2.contourArea(c)>1500:
continue
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),4)
M = cv2.moments(c)
if M['m00']!=0:
cX = int(M['m10'] /M['m00'])
cY = int(M['m01'] /M['m00'])
centers.append([cX,cY])
else:
print("Impossible to append to centers.")
if len(centers)==2:
dx= centers[0][0] - centers[1][0]
dy = centers[0][1] - centers[1][1]
D = abs(dx)
print("Distance (pixels): ")
print(D)
print("Distance (meters): ")
D = D * conversion_rate
print(D)
cv2.putText(frame,str(D)+" meters",(frame.shape[1] - 200, frame.shape[0] - 20), cv2.FONT_HERSHEY_SIMPLEX,2.0, (0, 255, 0), 3)
或data[row]
保存在row
的某个位置。然后,您可以重新加载ReservationViewController
为您的第二个tableView
执行逻辑。
UIPickerView