gpt4 book ai didi

ios - UITableView reloadData() Swift2 不重新加载数据

转载 作者:行者123 更新时间:2023-11-29 00:47:19 25 4
gpt4 key购买 nike

我是 Swift 的新手,尝试在 UITableView 中显示乘法表并根据 slider 值更改数据。更改 slider 位置时模型会更新,但 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() 应该在底层模型发生变化时更新 View ,例如 android 中的 notifyDataSetChanged()。我是否缺少 tableView 的某些功能?

最佳答案

您的ViewController 类需要实现UITableViewDataSource 协议(protocol),不需要在这里实现UITableViewDelegate。并且需要在 viewDidLoad 函数中赋值(例如):

override func viewDidLoad() {
super.viewDidLoad()
let number: Int = Int(slider.value)
populateData(number)
tableView.datasource = self;
}

快速说明:UITableViewDatasource 负责用数据填充UITableViewUITableViewDelegate 关心单元格高度和选择状态。

关于ios - UITableView reloadData() Swift2 不重新加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38477794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com