2016-04-12 21 views
1

私はUITableViewDelegate、UITableViewDataSourceを30ユニティファイルで使用し、 はすべて同じコードで、どのように再利用可能にすることができますか? UITableViewDelegateのちょうど2つのメソッドと、行の高さのようなカスタムアイテムです。UITableViewをどのように拡張できますか?

例:

import UIKit 
import MMDrawerController 
import SwiftyJSON 


class FooViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { 
    var texto = [String]() 

    @IBOutlet weak var table: UITableView! 

    override func viewDidLoad() { 
     let load = Loader(view: self.view) 
     table.delegate = self 
     table.dataSource = self 
     table.rowHeight = UITableViewAutomaticDimension 
     table.estimatedRowHeight = 44.0 

     let api = API() 
     api.get("agenda") { responseObject, error in 

      let value = JSON(responseObject!) 
      self.texto.append(value["agenda"]["textoagenda"].stringValue) 

      self.table!.reloadData() 
      load.stop(self.view) 
     } 
    } 


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

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return self.texto.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell 
     cell.textLabel?.text = self.texto[indexPath.row] 
     return cell 
    } 


} 
+1

延長の意味は?コードを再利用する方法は1つの質問です。テーブルを拡張する方法は別の質問です。しかし、「どのようにそれらを再利用可能にすることができるか」は、それが何を意味するのかを謎めいています。 – Gruntcakes

+0

データの配列を保持し、dataSourceメソッドを実装するUITableViewのdataSourceとして新しいクラスを作成できます。しかし、それはUITableViewを拡張するものとして呼ばれません。 –

+0

そのようなテーブルのすべてのコードを1つの関数/クラスに入れてください –

答えて

0

お使いのコントローラがデリゲートである必要はありません。任意のクラスを代理人にすることができます。もちろん

class MyTableDelegate: UITableViewDelegate { 

    // put table functions here 

} 

その後、あなたのコントローラで

@IBOutlet weak var table: UITableView! 

override func viewDidLoad() { 
    let load = Loader(view: self.view) 
    table.delegate = MyTableDelegate() 

    // etc 

} 

、これはあなたがコントローラのプロパティへのアクセスが制限があることを意味します。

関連する問題