swift - 从一个 ViewController 转到另一个 ViewController 并更新

标签 swift uitableview swift3

现在我有 3 个这样的 View Controller :

HomeViewcontroller = VC1.
Viewcontroller2 = VC2 --> has a table view with cells on it.
Viewcontroller3 = VC3 --> allows me to edit each cell in VC2 or delete.

我在 Viewcontroller 之间使用 NavigationController,以获得漂亮的“后退”按钮 :)

假设我在 VC1 中,我按下一个按钮然后转到 VC2。 现在假设我有 4 个单元格。 我按下单元格 2,然后转到 VC3,我可以在其中编辑单元格中的内容,甚至删除它。 一切正常(已测试)。

假设我想删除那个单元格。我在 VC3 上有一个按钮,我使用它并删除了单元格(这已经过测试并且工作正常)。

现在,当我这样做时,我会像这样再次进入 VC2:

let viewController = storyboard?.instantiateViewController(withIdentifier: "VC2") as! VC2!
self.navigationController?.pushViewController(viewController!, animated: true)

问题是,当我执行此操作时,我转到了 VC2,但我没有重新加载我的 tableView(已删除的单元格仍然存在)。

为了解决这个问题,我尝试在 VC2 的 viewDidLoad 中添加一些代码:

self.tableView.reloadData()

现在我设法做到了。我的意思是,当我从 VC3 中删除一个单元格时,我被推送到 VC2 而该单元格不存在。但是,如果我按下后退按钮,它会将我带到我已删除的上一个单元格,如果该单元格不再存在,我不希望它带我到那里。我想让它带我去 VC1(家)。

我怎样才能让它工作?

也许我应该用另一种方式来做到这一点,而不是那样插入?

最佳答案

实际上你做错了,当在 VC3 上完成删除/编辑操作并且你想在 VC2 上返回时,为什么你在做 pushViewController ,你必须应用 popViewController.

您必须应用 self.navigationController?.popViewController(animated: true) 从 VC3 返回到 VC2。

删除

let viewController = storyboard?.instantiateViewController(withIdentifier: "VC2") as! VC2!
self.navigationController?.pushViewController(viewController!, animated: true)

添加

self.navigationController?.popViewController(animated: true)

还有

将 TableView 的reloadData() 方法放在viewWillAppear 中。就像下面的代码。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.tableView.reloadData()

}

有关 UINavigationController 的一些引用资料。

https://developer.apple.com/reference/uikit/uinavigationcontroller

关于swift - 从一个 ViewController 转到另一个 ViewController 并更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40764430/

相关文章:

ios - Swift - 大标题和搜索栏

ios - 无法修改 UICollectionView 中的 UILabel 框架?

swift - 单击菜单项打开 URL

swift - 快速创建秒表

ios - NSPredicate 格式的第二个参数为 "Invalid predicate: nil RHS"

ios - UITableViewCell 不显示

iphone - 在 iPhone 的 Objective-C 中的 (commitEditingStyle) 之外调用 (deleteRowsAtIndexPaths)

ios - 将 MFSideMenu 3rd 方库添加到 swift 项目

swift - 在 Swift 2.0 中写入文件时出现问题

swift - 函数队列 - Swift