2017-01-12 6 views
0

Вместо назначения контроллера вида в качестве 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) 
    } 
} 

Edit: Я пытаюсь сделать это программно без раскадровки. Я создал расширение UITableViewDelegate, потому что я пытаюсь уменьшить код в View Controller.

+0

Как и где вы объявили 'companyDetailsVC'? –

+2

Что такое класс TableViewDelegate? Почему бы вам просто не создать расширение для 'CompanyDetailsViewController'? – Tj3n

ответ

0

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

Убедитесь, что компанияDetailsVC объявлена ​​в контроллере. Вам не нужно использовать «я» до его вызова из блока.

extension yourViewController: UITableViewDelegate { 
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    self.companyDetailsVC = CompanyDetailsViewController() 
    self.present(companyDetailsVC, animated: true, completion: nil) 
    }  
} 
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) 
}