【问题标题】:Use of unresolved identifier in UITableViewDelegate extension在 UITableViewDelegate 扩展中使用未解析的标识符
【发布时间】:2017-01-12 06:01:26
【问题描述】:

我没有将视图控制器分配为UITableViewDelegate,而是尝试通过为UITableViewDelegate 创建扩展来减少视图控制器中的代码。

当 Swift 3 语法正确时,为什么行 companyDetailsVC = CompanyDetailsViewController() 会出现错误“使用未解析的标识符 companyDetailVC”?

代码

extension TableViewDelegate: UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        companyDetailsVC = CompanyDetailsViewController()
        self.present(companyDetailsVC, animated: true, completion: nil)
    } 
}

编辑:我正在尝试在没有情节提要的情况下以编程方式执行此操作。我创建了一个UITableViewDelegate 扩展,因为我试图减少视图控制器中的代码。

【问题讨论】:

  • 你是如何以及在哪里声明 companyDetailsVC 的?
  • TableViewDelegate 类是什么?为什么不为CompanyDetailsViewController 创建扩展名

标签: ios swift xcode swift-extensions


【解决方案1】:

呈现 Viewcontroller 的代码应该有点像这样 扩展名应该是

extension YourClassNameHere: UITableViewDelegate {
    //then your did select method comes here and in that put this code for presenting the viewcxontroller
    let companyDetailsVC = CompanyDetailsViewController() //change this to your class name
    self.present(companyDetailsVC, animated: true, completion: nil)
}

【讨论】:

    【解决方案2】:

    用以下代码替换您的代码。你需要提供你的 ViewController 来创建它的扩展并使用它的属性和方法。

    确保在控制器中声明了 companyDetailsVC。在从块调用之前,您不需要使用 self。

    extension yourViewController: UITableViewDelegate {
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        self.companyDetailsVC = CompanyDetailsViewController()
        self.present(companyDetailsVC, animated: true, completion: nil)
      }    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 2016-02-25
      • 2016-07-17
      相关资源
      最近更新 更多