繁体   English   中英

Swift / UILabel子类上的操作,未调用委托方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM