代码之家  ›  专栏  ›  技术社区  ›  JamMan9

在继续之前按下另一个TableViewCell中的按钮时,是否在TableViewCell中捕获TextView值?

  •  0
  • JamMan9  · 技术社区  · 6 年前

    我有以下表格视图:

    enter image description here

    当用户单击蓝色的Pay Cash/Card按钮时,它们会转到另一个tableView。

    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        if(text == "\n") {
            textView.resignFirstResponder()
            return false
        }
        return true
    }
    
    func textViewDidBeginEditing(_ textView: UITextView) {
        if textView.textColor == UIColor.lightGray {
            textView.text = nil
            textView.textColor = UIColor.black
        }
    }
    
    func textViewDidEndEditing(_ textView: UITextView) {
        if textView.text.isEmpty {
            textView.text = "Enter a note for the takeaway (optional)"
            textView.textColor = UIColor.lightGray
        } else {
            self.note = textView.text
        }
    }
    

    如您所见,如果我输入一些文本,然后单击Done按钮,在单击segue按钮之前,我能够成功地传递值。但是,如果用户在单击done之前单击蓝色segue按钮,它就会出现segue,我不确定如何捕获textView的值。下面是按钮委托的代码,我还传递了prepareForSegue方法。

    我希望我正在努力实现的目标是有意义的;我确实很难解释,所以如果我不清楚,请让我知道,我会尝试进一步扩展。

    谢谢, J型

    func buttonPressed() {
        performSegue(withIdentifier: "showNameAddress", sender: nil)
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if(segue.identifier == "showNameAddress") {
            let nameAddressTableViewController = segue.destination as! NameAddressTableViewController
            if(self.delivery == true) {
                nameAddressTableViewController.delivery = true
                nameAddressTableViewController.finalPrice = self.basket.totalPriceOfAllItems() + Double(BasketArrays.deliveryCharge)!
            } else {
                nameAddressTableViewController.delivery = false
                nameAddressTableViewController.finalPrice = self.basket.totalPriceOfAllItems()
            }
            nameAddressTableViewController.note = self.note
            nameAddressTableViewController.show(self, sender: nil)
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Alex Brown    6 年前

    您可以在 func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool .

    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, 
    replacementText text: String) -> Bool {
        if(text == "\n") {
            textView.resignFirstResponder()
            return false
        }
        self.note = textView.text + text
        return true
    }
    

    这样你的 self.note 变量总是随着每次按键的更改而更新。