无法显示在UITableViewCell中

时间:2018-10-08 21:51:56

标签: ios swift xcode uitableview presentviewcontroller

以下代码在UIViewController中有效,但是在我的班级中,UITableViewCell却给出了错误

  

使用未解决的标识符“ present”。

代码是一个动作:

@IBAction func linkAction(_ sender: Any) { 
  let linkString = self.linkText.text 
  if let requestUrl = URL(string: linkString!) {
     let safariVC = SFSafariViewController(url: requestUrl)
     present(safariVC, animated: true)  
  }
}

有修复程序吗?

2 个答案:

答案 0 :(得分:0)

您需要与提供此TableView的ViewController通信。要么带有远程通知,要么是委托。

答案 1 :(得分:0)

在主UITableViewController中:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

  let cell = tableView.dequeueReusableCell(withIdentifier: "idCell", for: indexPath)
  cell.viewController = self

}

在UITableViewCell类中:

class TableViewCell: UITableViewCell {

  weak var viewController: UIViewController?

  @IBAction func linkAction(_ sender: Any) { 
    let linkString = self.linkText.text 
    if let requestUrl = URL(string: linkString!) {
       let safariVC = SFSafariViewController(url: requestUrl)
       viewController?.present(safariVC, animated: true, completion: nil)
    } 
  }
}