Я пытаюсь создать простой TableView в Swift, но вместо того, чтобы соответствовать протоколу datasource в моем ViewController, я хотел создать новый класс, который будет служить DataSource. К сожалению, при таком подходе я не могу загрузить что-либо для загрузки в свой ViewController.cellForRowAtIndexPath для TableView не называется?
Это мой ViewController Класс:
class SaladViewController: UIViewController {
@IBOutlet weak var saladTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let tableData = LunchTableData()
self.saladTable.dataSource = tableData
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
И это мой DataSource класс:
class LunchTableData: NSObject, UITableViewDataSource {
var things = ["One", "Two", "Three"]
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return things.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell")
let itemText = cell!.viewWithTag(100) as! UILabel
itemText.text = things[indexPath.row]
return cell!
}
}
RowAtIndexPath становится называется тонкой, так что я просто не знаю, почему CellForRowAtIndexPath не всегда называемый. Я установил точку останова, и он никогда не попадает в нее.
Благодарим за помощь!
Это именно то, что должно быть сделано. Данные таблицы были объявлены как локальная переменная, а это означает, что она уничтожается, когда заканчивается ее область действия, которая в вашем случае является завершением 'viewDidLoad()'. – NRitH
Да, свойство источника данных «слабо». – rmaddy
Вот и все! Спасибо! Забыл о переменных областях ... Кроме того, что означает «слабый» против «сильного» в Свифте? – CPL