Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift TextView自定义子类-textViewDidChange不会触发_Swift_Uitextview - Fatal编程技术网

Swift TextView自定义子类-textViewDidChange不会触发

Swift TextView自定义子类-textViewDidChange不会触发,swift,uitextview,Swift,Uitextview,我试图向TextView子类添加一个变量,但一旦我这样做,我就无法让textViewDidChange正常工作,我想这是因为委托 它在没有子类的情况下工作并打印itemOrderID。我如何让它与我的自定义子类一起工作 class textViewSub: UITextView { var itemOrderID: Double = 0.0 } class TextviewCell: UITableViewCell, UITextViewDelegate { @IBOutlet

我试图向TextView子类添加一个变量,但一旦我这样做,我就无法让textViewDidChange正常工作,我想这是因为委托

它在没有子类的情况下工作并打印itemOrderID。我如何让它与我的自定义子类一起工作

class textViewSub: UITextView {
    var itemOrderID: Double = 0.0
}

class TextviewCell: UITableViewCell, UITextViewDelegate {
    @IBOutlet weak var textView: textViewSub!
    @IBOutlet weak var textViewLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        textView.delegate = self
    }

    func textViewDidChange(_ textView: textViewSub) {
        let id = textView.tag
        let text = textView.text
        let itemOrderID = textView.itemOrderID

        print(itemOrderID)
    }
}
cellForRowAt代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  let cell = tableView.dequeueReusableCell(withIdentifier: "TextviewCell", for: indexPath) as! TextviewCell
   cell.tag = indexPath.row
   cell.textView.tag = indexPath.row
   cell.textView.itemOrderID = checklistData[indexPath.section].checklistItems?[indexPath.row].itemOrderID ?? 0.0
   cell.textView.delegate = cell

   return cell
}

您的
textViewDidChange
函数与
UITextViewDelegate
协议不匹配。 应该是:

 func textViewDidChange(_ textView: UITextView) {
      guard let sub = textView as? textViewSub else { return }
      let id = sub.tag
      let text = sub.text
      let itemOrderID = sub.itemOrderID

      print(itemOrderID)
  }

您的
textViewDidChange
函数与
UITextViewDelegate
协议不匹配。 应该是:

 func textViewDidChange(_ textView: UITextView) {
      guard let sub = textView as? textViewSub else { return }
      let id = sub.tag
      let text = sub.text
      let itemOrderID = sub.itemOrderID

      print(itemOrderID)
  }

确保将IB中的
textView
设置为
TextViewSub
。另外,类名应该大写。@Koen是的,它已经设置好了。请确保每次重用单元格时都会调用awakeFromNib。或者可以肯定的是,将textView.delegate=self-better放在cellForRowAtIndexPath中,以确保始终设置委托。@Chris现在当我使用cell.textView.delegate=self-as时,它崩溃了!请向我们展示您的cellForRow…代码。确保您在IB中将
textView
设置为
TextViewSub
。另外,类名应该大写。@Koen是的,它已经设置好了。请确保每次重用单元格时都会调用awakeFromNib。或者可以肯定的是,将textView.delegate=self-better放在cellForRowAtIndexPath中,以确保始终设置委托。@Chris现在当我使用cell.textView.delegate=self-as时,它崩溃了!在cellForRow中的UITextViewDelegate请向我们显示您的cellForRow…代码。