Использование неразрешенного идентификатора в расширении UITableViewDelegate

Вместо того, чтобы назначать контроллер представления как 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.


person 14wml    schedule 12.01.2017    source источник
comment
Как и где вы объявили companyDetailsVC ?   -  person Midhun MP    schedule 12.01.2017
comment
Что такое TableViewDelegate класс? Почему бы вам просто не создать расширение для CompanyDetailsViewController   -  person Tj3n    schedule 12.01.2017


Ответы (2)


Замените свой код приведенным ниже кодом. Вам нужно будет предоставить свой ViewController, чтобы создать его расширение и использовать его свойство и метод.

Убедитесь, что в контроллере объявлено companyDetailsVC. Вам не нужно использовать self, пока он не будет вызван из блока.

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

Код для представления 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)
}
person Nishant Tiwari    schedule 12.01.2017