Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILabel子类上的Swift/操作,未调用委托方法_Ios_Swift - Fatal编程技术网

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

Ios UILabel子类上的Swift/操作,未调用委托方法,ios,swift,Ios,Swift,我正在使用它来处理标签中的URL。要使用WebView打开UIViewController以显示URL的内容,我想使用委托方法 我尝试了不同的方法来调试我的问题 protocol ActiveLabelURLDelegate { func activeLabelURLDelegate(url: NSURL) } extension FirstVC: ActiveLabelURLDelegate { func activeLabelURLDelegate(url: NSURL)

我正在使用它来处理标签中的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)
}
正如您在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?