Mise à jour de indexPath.row après la suppression d'une cellule de la vue de table

J'ai une vue de table avec des cellules qui présentent une vue de table différente quand on appuie dessus, selon l'indexPath, c'est-à-dire:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let nc = UINavigationController() let productController = ProductController() nc.viewControllers = [productController] //Apple if (indexPath.row == 0) { productController.navigationItem.title = "Apple Products"; } //Google if (indexPath.row == 1) { productController.navigationItem.title = "Google Products"; } //Twitter if (indexPath.row == 2) { productController.navigationItem.title = "Twitter Products"; } //Tesla if (indexPath.row == 3) { productController.navigationItem.title = "Tesla Products"; } //Samsung if (indexPath.row == 4) { productController.navigationItem.title = "Samsung Products"; } present(nc, animated: true, completion: nil) } 

Cependant, quand je supprime une cellule comme ça ….

 override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { tableView.beginUpdates() CompanyController.companies.remove(at: indexPath.row) CompanyController.logos.remove(at: indexPath.row) tableView.deleteRows(at: [indexPath], with: .fade) tableView.endUpdates() } } 

…. l'indexPath n'est pas mis à jour, donc si je supprime la cellule Apple (à indexPath.row 0), la cellule de Google prend sa place, mais mène toujours à la page de produits d'Apple, et ainsi de suite pour le rest des entresockets. J'ai pensé que la ligne tableView.delete rows s'occupait de ça, mais ce n'est pas le cas. Comment puis-je mettre à jour l'indexPath une fois que quelque chose est supprimé?

Ne pas coder datatables en dur et prendre des lignes spécifiques. Placez datatables dans un tableau et récupérez les valeurs du tableau en fonction du path d'index. Lorsqu'une ligne est supprimée, mettez à jour votre model de données en le supprimant du tableau.

Mettez à jour votre méthode didSelectRow pour:

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let nc = UINavigationController() let productController = ProductController() nc.viewControllers = [productController] productController.navigationItem.title = CompanyController.companies[indexPath.row] present(nc, animated: true, completion: nil) }