2017-02-25 4 views
0

私は代議員に問題があります。以下 は、ここでタイプのUITableViewController代理人はゼロです(Swift 3)

import Foundation 
import UIKit 

protocol DashboardControllerDelegate{ 
    func companySelected() 
} 


class DemoTable: UITableViewController 
{ 
    var delegate : DashboardControllerDelegate? 
    var arr_string = [String]() 

    init(array: [String]) 
    { 
     arr_string = array 
     super.init(nibName: nil, bundle: nil) 
    } 

    required init?(coder aDecoder: NSCoder) 
    { 
     fatalError("init(coder:) has not been implemented") 
    } 


    override func numberOfSections(in tableView: UITableView) -> Int 
    { 
     return 1 
    } 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return arr_string.count 
    } 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    { 
     delegate?.companySelected() 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    { 
     var cell = tableView.dequeueReusableCell(withIdentifier: "Cell") 

     if cell == nil { 
      cell = UITableViewCell(style: .default, reuseIdentifier: "Cell") 
      cell?.frame(forAlignmentRect: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 30)) 
     } 

     cell?.textLabel?.text = arr_string[indexPath.row] 

     return cell! 

    } 
} 

のDemoTableクラスであるコントローラクラス

import UIKit 

class ViewController: UIViewController, DashboardControllerDelegate 
{   
    var dataSourceTable:DemoTable? 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 

     let fruitList = UITableView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height * 0.9)) 
     fruitList.backgroundColor = UIColor.white 

     let arr_Fruits = ["Mango", "Papaya", "Graps", "Apple"] 

     self.dataSourceTable = DemoTable(array: arr_Fruits) 
     fruitList.dataSource = self.dataSourceTable 
     fruitList.delegate = self.dataSourceTable 
     view.addSubview(fruitList) 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
    } 

    func companySelected() 
    { 
     print("Selected") 
    } 
} 

問題はViewControllerをクラスで呼び出されていない "companySelected" デリゲート関数です。 ヘルプは感謝します:-)

+0

デフォルトの初期化子を追加する必要が 'DemoTableは()'ストーリーボード内のインスタンスは異なる新たなインスタンスを作成します。あなたは実際の参照が必要です。 – vadian

+0

私はストーリーボードを使用していませんので、私は非常にiOSに新しいですので詳細を教えてください –

+0

あなたがストーリーボードを使用していない理由は何ですか?コードでのUIの作成は、かなり高度なトピックです。この場合は、コントローラをビュー階層に追加する必要があります。 – vadian

答えて

0

私は答えました。私は

のviewDidLoadで
self.dataSourceTable?.delegate = self 

()