У меня есть UIViewController
, в который я встроил UITableView
. Если вы добавили выход в мой класс ViewController.Как использовать внешний источник данных в UITableView
Поскольку я не хочу, чтобы ViewController
стал слишком тяжелым, я хотел бы поместить методы протокола UITableViewDataSource
и UITableViewDelegate
в отдельные классы.
Так что я создал TableViewDataSource.swift и класс TableViewDelegate:
class TableViewDelegate : NSObject, UITableViewDelegate {
//custom code here if required
}
class TableViewDataSource : NSObject, UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "MyCellIdentifier"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)
cell.textLabel?.text = "left text"
cell.detailTextLabel?.text = "right text"
return cell
}
}
class ViewController: UIViewController {
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = TableViewDataSource()
tableView.delegate = TableViewDelegate()
tableView.setNeedsDisplay()
// Do any additional setup after loading the view, typically from a nib.
}
}
В моей раскадровки, я создал прототип ячейку в Tableview с идентификатором «MyCellIdentifier». Я использую этот идентификатор для создания ячейки в моем методе TableViewDataSource.
Однако, если я запустил приложение, я вижу только пустой tableView. Эти методы даже не вызываются, даже если я установил их в методе viewDidLoad для ViewController. Я также попытался заставить tableView перерисовать, вызвав setNeedsDisplay. Это тоже не повлияло.
Вы действительно не загружаете таблицы – lzl
@lzl Можете ли вы рассказать мне, что делать, чтобы загрузить таблицы? – slashburn
вам нужен фактический источник данных, например массив, а затем используйте содержимое этого – lzl