我正在使用ActiveLabel来处理标签中的网址。要使用UIViewController
打开WebView
以显示网址内容,我想使用委托方法。
我尝试过不同的方法来调试我的问题。
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)
}
正如您在print语句中看到的那样,一切都有效,直到委托调用。委托函数activeLabelURLDelegate
未被调用。我错过了什么?在同一个单元格和同一个UIViewController
中,我使用了UIButtons
的其他4位代表,他们的工作非常完美。
PS:链接将在UI&中正确显示为链接。正确的URL将打印到控制台。
答案 0 :(得分:2)
看起来你忘了挂上代表了。我在单元格代码中看不到labelURLDelegate的作业。