我在30个统一文件中使用UITableViewDelegate,UITableViewDataSource, 所有使用相同的代码,我如何使它们可以重复使用扩展它们? 它只有两个UITableViewDelegate方法和一些自定义的东西,比如行高。
示例:
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
}
}
答案 0 :(得分: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
}
当然,这意味着您可以有限地访问控制器的属性。