2016-09-29 92 views
0

我使用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未被调用。我错过了什么?在同一个单元格中,我使用4个其他代表UIButtons,并且它们工作正常。

PS:链接将被正确地显示为正确的URL被打印到控制台用户界面内&链接。

回答

2

看起来你忘了挂钩委托。我在您的单元代码中看不到labelURLDelegate的任务。

+0

一个好的经验法则:当代码看起来像它应该工作,但没有,请检查您的出口和委托的连接。 –

+0

谢谢。我会记住这一点 –

+0

哦,并检查IBAction连接。 –