2017-01-12 6 views
0

UITableViewDelegateとしてビューコントローラを割り当てるのではなく、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) 
    } 
} 

編集:私はストーリーボードなしでプログラム的にこれをやろうとしている。 View Controllerのコードを減らそうとしているので、私はUITableViewDelegateという拡張子を作成しました。

+0

「companyDetailsVC」をどのように宣言しましたか? –

+2

'TableViewDelegate'クラスとは何ですか?なぜあなたは 'CompanyDetailsViewController'の拡張機能を作成していないのですか? – Tj3n

答えて

0

ようにする必要があります。拡張機能を作成し、そのプロパティとメソッドを使用するには、ViewControllerを提供する必要があります。

コントローラにcompanyDetailsVCが宣言されていることを確認してください。ブロックから呼ばれるまで自分を使う必要はありません。

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) 
} 
関連する問題