Ios UILabel子类上的Swift/操作,未调用委托方法
我正在使用它来处理标签中的URL。要使用Ios UILabel子类上的Swift/操作,未调用委托方法,ios,swift,Ios,Swift,我正在使用它来处理标签中的URL。要使用WebView打开UIViewController以显示URL的内容,我想使用委托方法 我尝试了不同的方法来调试我的问题 protocol ActiveLabelURLDelegate { func activeLabelURLDelegate(url: NSURL) } extension FirstVC: ActiveLabelURLDelegate { func activeLabelURLDelegate(url: NSURL)
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)
}
正如您在print语句中看到的,在委托调用之前,一切都正常。未调用委托函数activeLabelURLDelegate
。我错过了什么?在同一个单元格和同一个UIViewController
,我为uibutton
使用了4个其他代理,它们工作得非常好
PS:链接将在UI中正确显示为链接&正确的URL将打印到控制台。看起来您忘记连接代理了。我在您的单元格代码中没有看到分配给labelURLDelegate的任务。看起来您忘记连接代理了。我在您的单元格代码中没有看到labelURLDelegate的分配。一个很好的经验法则:当代码看起来应该工作,但不工作时,检查您的插座和代理连接。哦,还检查iAction连接。是的,当然。总是先检查,我不相信苹果公司在xcode中没有一个系统,当代码被删除时,它会删除引用……一个很好的经验法则:当代码看起来应该可以工作,但不能工作时,检查你的插座和代理连接。哦,还有检查iAction连接。是的,当然。检查始终是第一位的我不相信苹果没有在xcode中创建一个系统,在代码被删除时删除引用…在我的例子中-myLabel.handleURLTap{givenURL In print(“Success.You刚才点击了(givenURL)URL”)//这个打印没有被称为}你能给出原因吗?很可能是同样的原因。代理未钩住。您是否检查了myLabel.delegate=self?在我的例子中-myLabel.handleURLTap{givenURL In print(“成功。您刚刚点击了(givenURL)URL”)//此打印未被调用}您能给出原因吗?很可能是相同的原因。代理未钩住。您是否检查了myLabel.delegate=self?