[英]Swift / Action on UILabel Subclass, delegate method not called
我正在使用ActiveLabel处理标签中的URL。 要使用WebView
打开UIViewController
以显示URL的内容,我想使用委托方法。
我尝试了不同的方式来调试我的问题。
protocol ActiveLabelURLDelegate {
func activeLabelURLDelegate(url: NSURL)
}
extension FirstVC: ActiveLabelURLDelegate {
func activeLabelURLDelegate(url: NSURL) {
print("debug activeLabelURLDelegate called") // THIS PRINT WILL NOT CALLED
let vc = stb.instantiateViewControllerWithIdentifier("SecondVC") as! SecondVC
vc.webSite = url
self.navigationController?.pushViewController(vc, animated: true)
}
}
class Cell: UITableViewCell {
@IBOutlet weak var myLabel: ActiveLabel!
var labelURLDelegate : ActiveLabelURLDelegate?
override func awakeFromNib() {
myLabel.handleURLTap { givenURL in
print("Success. You just tapped the \(givenURL) URL") // THIS PRINT IS CALLED
self.labelURLDelegate?.activeLabelURLDelegate(givenURL)
}
}
}
在此无效之后,我实现了一个帮助功能来调试所谓的功能。
func openURL(url: NSURL) {
print("debug openURL called") // THIS PRINT IS CALLED AS WELL
labelURLDelegate?.activeLabelURLDelegate(url)
}
致电者:
myLabel.handleURLTap { givenURL in
print("Success. You just tapped the \(givenURL) URL") // STILL CALLED
self.openURL(givenURL)
}
正如您在打印语句上看到的那样,所有操作都可以进行,直到委托调用为止。 不调用委托函数activeLabelURLDelegate
。 我想念什么? 在相同的Cell和相同的UIViewController
,我为UIButtons
使用了其他4个委托,它们运行良好。
PS:链接将正确显示为UI中的链接,并且正确的URL已打印到控制台。
好像您忘了联系代表。 在您的单元格代码中没有看到对labelURLDelegate的分配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.