在不同的UITableViewCell

时间:2018-06-04 10:10:31

标签: ios swift xcode uitableview uipickerview

我有两个不同的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

    }
}

我如何将数据值传递给下一个单元格?

1 个答案:

答案 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