iOS - 无法访问 UITableViewCell 中的 UITextView 委托 class
iOS - Cannot access UITextView delegate inside a UITableViewCell class
在实例化的 UITableViewCell
class.
中尝试访问 UITableViewDelegate
方法时,我发现了一些问题
我正在尝试访问
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 - "Must call a designated initializer of the superclass" 'UITableViewCell'
关于如何通过此立交桥的任何提示?
提前致谢
最终编辑
我做了我真正想做的事。
我没有在 UITableViewCell Class 中使用 UITextFieldDelegate,而是将 UITextFieldDelegate 添加到使用单元格本身的 ViewController,并且在单元格配置上刚刚做了:
cell.textView.degelate = Self
,然后我实现了委托函数
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {}
感谢小伙伴们的回答。
给您带来麻烦的那行不是 textView.delegate = self
,而是 super.init()
。您需要使用 nibName 和 bundle 正确调用它。
init() {
super.init(nibName: PutTheStringHere, bundle: PutTheBundleHere)
textView.delegate = self
}
override func awakeFromNib() {
super.awakeFromNib()
textView.delegate = self
}
干得好
在实例化的 UITableViewCell
class.
UITableViewDelegate
方法时,我发现了一些问题
我正在尝试访问
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 - "Must call a designated initializer of the superclass" 'UITableViewCell'
关于如何通过此立交桥的任何提示?
提前致谢
最终编辑
我做了我真正想做的事。
我没有在 UITableViewCell Class 中使用 UITextFieldDelegate,而是将 UITextFieldDelegate 添加到使用单元格本身的 ViewController,并且在单元格配置上刚刚做了:
cell.textView.degelate = Self
,然后我实现了委托函数
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {}
感谢小伙伴们的回答。
给您带来麻烦的那行不是 textView.delegate = self
,而是 super.init()
。您需要使用 nibName 和 bundle 正确调用它。
init() {
super.init(nibName: PutTheStringHere, bundle: PutTheBundleHere)
textView.delegate = self
}
override func awakeFromNib() {
super.awakeFromNib()
textView.delegate = self
}
干得好