2016-09-29 122 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連接。 –