iOS - 无法在UITableViewCell类中访问UITextView委托

问题描述:

在实例化的UITableViewCell类中尝试访问UITableViewDelegate方法时发现一些问题。iOS - 无法在UITableViewCell类中访问UITextView委托

我试图访问 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'

任何提示如何超越这个?

在此先感谢

最后编辑 我已经做了我真正想做的事。 而不是使用UITextFieldDelegate的UITableViewCell类,里面的,我已经添加了UITextFieldDelegate到使用细胞本身的视图控制器,并在电池配置只是做: cell.textView.degelate = Self,然后我实现的 func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {}

委托函数

谢谢你回答男孩。

+0

我和便利的init(),它没有工作 –

+0

我不认为super.init()已经尝试过是指定的初始化。尝试其他人之一。我认为可能有一个super.init(nib:,bundle :)或类似的东西。 – Erik

+0

如果我尝试'super.init(style:UITableViewCellStyle.default,reuseIdentifier:“mainCell”)'initialiser,将显示所需的init()致命错误。 –

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

尼斯工作

+0

欢迎来到StackOverflow!虽然答案总是值得赞赏的,但请提供一些关于答案的上下文,并参阅[帮助文章](http://stackoverflow.com/help/how-to-answer)以获取有关如何编写出色答案的信息。 –

+0

奇怪的是,这工作,但我发誓,我已经尝试过,并有编译错误:/ 谢谢反正m8 –

给你麻烦的线不是textView.delegate = self而是super.init()。你需要用nibName和bundle正确调用它。

init() { 
    super.init(nibName: PutTheStringHere, bundle: PutTheBundleHere) 
    textView.delegate = self 
}