我没有将视图控制器指定为UITableViewDelegate
,而是尝试通过为UITableViewDelegate
创建扩展来减少视图控制器中的代码。
为什么我收到错误"使用未解析的标识符companyDetailVC"对于行companyDetailsVC = CompanyDetailsViewController()
,当这是正确的Swift 3语法?
代码
extension TableViewDelegate: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
companyDetailsVC = CompanyDetailsViewController()
self.present(companyDetailsVC, animated: true, completion: nil)
}
}
编辑:我试图以编程方式执行此操作而不使用故事板。我创建了UITableViewDelegate
扩展程序,因为我试图减少View Controller中的代码。
答案 0 :(得分: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)
}
答案 1 :(得分:0)
用以下代码替换您的代码。您需要提供ViewController来创建其扩展并使用它的属性和方法。
确保在控制器中声明companyDetailsVC。在从块中调用之前,您不需要使用self。
extension yourViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.companyDetailsVC = CompanyDetailsViewController()
self.present(companyDetailsVC, animated: true, completion: nil)
}
}