2016-04-12 8 views
1

UITableViewDelegate, UITableViewDataSource 30 bütünlük dosyasında kullanıyorum, hepsi aynı kodla, onları reuseble genişletmek için nasıl yapabilirim? sadece iki UITableViewDelegate yöntemi ve satır yüksekliği gibi bazı özel şeyler.UITableView nasıl genişletilebilir?

Örnek:

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

Uzatma ile ne demek istiyorsun? Kodu yeniden kullanmak bir soru. Bir masa nasıl uzatılır başka bir soru. Ama "onları reuseble uzatarak nasıl uzatabilirim", ne anlama geldiği konusunda mistikleştiricidir. – Gruntcakes

+0

Verilerinizin bir dizisini tutan ve dataSource yöntemlerini uygulayan UITableView'ın veri kaynağı olarak yeni bir Sınıf yaratabilirsiniz. Ancak UITableView'ı genişletmek için çağrılmaz. –

+0

Tablodaki tüm kodları tek bir işlev/sınıf haline getirin –

cevap

0

Kişisel denetleyicisi temsilci olmak zorunda değildir. Delegeyi herhangi bir sınıfta yapabilirsiniz. Kumandanızda Tabii

@IBOutlet weak var table: UITableView! 

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

    // etc 

} 

yılında Sonra

class MyTableDelegate: UITableViewDelegate { 

    // put table functions here 

} 

, bu kumandanın özellikleri sınırlı erişim var demektir.