Ответ 1
Oh TableViews...
Итак, вы хотите динамически заполнять таблицу. Ну... вот ты пойдешь мой друг:
Шаг 1. Внедрение DataSource
Хорошо... так что вы знаете, что такое протокол? Хорошо, если вы не... BAM, теперь вы делаете (не я в видео). DataSource - это то, что UITableView будет вызывать для извлечения данных, которые он должен отображать. Чтобы быть конкретным, рассматриваемый DataSource является UITableViewDataSource.
так...
// change top to...
class MyViewController:UIViewController, UITableViewDataSource
Это делает UITableViewDataSource необходимым для вашего ViewController. Затем вам нужно установить источник данных в UITableView. Так....
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = quake.place
tableInfoQuake.datasource = self
}
Предположим, вы хотите добавить 7 ячеек в таблицу, и все 7 скажут "Hello Man". В этом примере я собираюсь сделать это самым худшим, но самым простым способом. если вы хотите, чтобы я углубился, просто напишите ниже, и я сделаю это лучше.
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 7
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let label = UILabel(CGRect(x:0, y:0, width:200, height:50))
label.text = "Hello Man"
cell.addSubview(label)
return cell
}
Итак, это для первого шага. Мы сказали таблице, что ViewController имеет то, что он ищет с точки зрения данных, и мы вернули данные для его использования.
Шаг 2. Реализация делегата
Как шаг 1, этот шаг начинается с добавления чего-то в начало...
// change top to...
class MyViewController:UIViewController, UITableViewDataSource, UITableViewDelegate
Затем, опять же, как верх, мы отредактируем функцию viewDidLoad()...
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = quake.place
tableInfoQuake.datasource = self
tableInfoQuake.delegate = self
}
И теперь мы должны реализовать методы делегата, которые обозначают высоту каждой ячейки.
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 50
}
Теперь мы добавили делегата в таблицу и реализовали метод, который сообщает UITableView, какова высота каждой ячейки.
Давайте все вместе
class MyViewController:UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var tableInfoQuake: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableInfoQuake.datasource = self
tableInfoQuake.delegate = self
}
// UITableViewDataSource Functions
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 7
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let label = UILabel(CGRect(x:0, y:0, width:200, height:50))
label.text = "Hello Man"
cell.addSubview(label)
return cell
}
// UITableViewDelegate Functions
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 50
}
}
Удачи вам.
ZR