Я новичок в Swift и пытаюсь показать таблицу умножения в UITableView и изменить данные на основе значения ползунка. Модель обновляется при изменении положения ползунка, но tableView не показывает обновление для видимых в данный момент частей таблицы. Обновление происходит при добавлении или удалении новых строк во время прокрутки. Некоторый код:
class ViewController: UIViewController, UITableViewDelegate {
@IBOutlet var slider: UISlider!
@IBOutlet var tableView: UITableView!
let maxCount = 50
var multiplierArray: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
let number: Int = Int(slider.value)
populateData(number)
}
func populateData(number: Int) {
var i = 0
multiplierArray.removeAll()
while i < maxCount {
let table = i + 1
let str = "\(number) x \(table) = \(table * number)"
print(str)
multiplierArray.append(str)
i += 1
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return multiplierArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.textLabel?.text = multiplierArray[indexPath.row]
print("cellForRowAtIndexPath called")
return cell
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int{
return 1
}
@IBAction func sliderValueChanged(sender: UISlider) {
let number: Int = Int(slider.value)
populateData(number)
tableView.reloadData()
print("slider value changed" + String(number))
}
}
Я прочитал довольно много сообщений по этой проблеме, но не смог понять проблему в приведенном выше коде. Насколько я понимаю, tableView.reloadData() должен обновлять представление при изменении базовой модели, например notifyDataSetChanged() в android. Мне не хватает некоторых функций tableView?