在尝试访问实例化UITableViewDelegate
类中的UITableViewCell
方法时,我发现了一些问题。
我正试图访问
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {}
并且函数不会触发,我猜这是因为我在尝试设置委托时遇到了一些问题。
代码如下:
import UIKit
class TableViewCell: UITableViewCell, UITextViewDelegate {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var textView: UITextView!
@IBOutlet var postImageView: UIImageView!
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {
print("link tapped")
return true
}
init() {
super.init()
textView.delegate = self
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
在super.init()
行显示此错误
TableViewCell.swift - “必须调用超类的指定初始值设定项”'UITableViewCell'
有关如何超越此问题的任何提示?
提前致谢
最终编辑
我做了我真正想做的事。
我没有在UITableViewCell类中使用UITextFieldDelegate,而是将UITextFieldDelegate添加到使用单元格本身的ViewController,并且在单元格配置上执行了以下操作:
cell.textView.degelate = Self
,然后我实现了委托函数
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {}
感谢您回答男生。
答案 0 :(得分:4)
override func awakeFromNib() {
super.awakeFromNib()
textView.delegate = self
}
干得好
答案 1 :(得分:1)
给您带来麻烦的不是textView.delegate = self
,而是super.init()
。您需要使用nibName和bundle正确调用它。
init() {
super.init(nibName: PutTheStringHere, bundle: PutTheBundleHere)
textView.delegate = self
}