the programming para language for descargar apple ios swift swift3

ios - programming - tableView.reloadData() La tabla no se actualiza



xcode for ipad (3)

La tabla no muestra la matriz actualizada para regresar a la celda. Cuando lance la aplicación, obtengo celdas en blanco. Todos los permisos se han dado en el guión gráfico. Intenté el tableView.reloadData() todas partes, pero parece que tampoco puedo hacerlo funcionar. Si alguien puede explicar dónde estoy equivocado, eso realmente me ayudará a mejorar.

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) } }


Agregue salida de tableview como este y conéctese con la tabla en el guión gráfico-

@IBOutlet weak var tableView1: UITableView!

Cambiar código a esto -

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var slider: UISlider! @IBOutlet weak var tableView1: UITableView! @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]) return cell } func tableGenerate () { var tableMultiplier = 1 while tableMultiplier <= 50 { arrayTable.append(tableMultiplier * Int(slider.value)) tableMultiplier += 1 } print(arrayTable) tableView1.reloadData() }


Al llamar a tableView.reloadData() dentro de cellForRowAt , crea un bucle infinito, ya que reloadData() llama automáticamente a cellForRowAt . reloadData() mover reloadData() dentro de tableGenerate() , ya que solo debe tableGenerate() cuando se cambia su fuente de datos.

También necesita crear un IBOutlet para su tableView en Storyboard . Como no está utilizando un UITableViewController , debe hacer esto manualmente.

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var tableView: UITableView! @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]) return cell } func tableGenerate () { var tableMultiplier = 1 while tableMultiplier <= 50 { arrayTable.append(tableMultiplier * Int(slider.value)) tableMultiplier += 1 print(arrayTable) } tableView.reloadData() } }


se olvidó de crear la salida de la mesa! También olvidé restablecer la matriz con el deslizador de matriz con arrayTable = [] ahora funciona bien