The table does not display the updated array to return to the cell. When I launch the app I get blank cells. All permissions have been given in the storyboard. I tried the tableView.reloadData()
everywhere but can't seem to make it work either. If anyone can explain where Im going wrong that would really help me get better.
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var slider: UISlider!
@IBAction func sliderSelector(_ sender: Any) {
tableGenerate()
}
var arrayTable = [Int]()
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayTable.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style:UITableViewCellStyle.default, reuseIdentifier: "Cell")
cell.textLabel?.text = String(arrayTable[indexPath.row])
tableView.reloadData()
return cell
}
func tableGenerate () {
var tableMultiplier = 1
while tableMultiplier <= 50 {
arrayTable.append(tableMultiplier * Int(slider.value))
tableMultiplier += 1
print(arrayTable)
}
}
By calling
tableView.reloadData()
insidecellForRowAt
, you create an infinite loop, sincereloadData()
automatically callscellForRowAt
. You need to movereloadData()
insidetableGenerate()
, since it should only be called when your data source is changed.You also need to create an IBOutlet for your tableView in
Storyboard
. Since you are not using aUITableViewController
, you need to do this manually.forgot to create the table outlet ! I also forgot to reset the array with the array slider with arrayTable = [] now it works fine
Add outlet of tableview like this and connect with table in storyboard-
Change code to this -