gpt4 book ai didi

ios - UILabel 子类上的 Swift/Action,未调用委托(delegate)方法

转载 作者:行者123 更新时间:2023-11-28 12:39:36 25 4
gpt4 key购买 nike

我正在使用 ActiveLabel处理标签中的 URL。要使用 WebView 打开 UIViewController 以显示 URL 的内容,我想使用委托(delegate)方法。

我尝试了不同的方法来调试我的问题。

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)
}

正如您在打印语句中看到的那样,在委托(delegate)调用之前一切正常。未调用委托(delegate)函数 activeLabelURLDelegate。我错过了什么?在同一个 Cell 和同一个 UIViewController 中,我为 UIButtons 使用了 4 个其他委托(delegate),它们运行良好。

PS:链接将在 UI 中正确显示为链接,并将正确的 URL 打印到控制台。

最佳答案

您似乎忘记连接委托(delegate)。我在您的单元格代码中没有看到对 labelURLDelegate 的分配。

关于ios - UILabel 子类上的 Swift/Action,未调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39780358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com