【发布时间】:2017-11-14 23:37:38
【问题描述】:
我有一个 ViewController(VCA),里面有一个 TableView。从这个 ViewController 可以调用另一个 ViewController (VCB)。在这第二个 VC 中,可以向用于填充 VCA 中的 TableView 的 plist 添加一个项目。问题是当我保存新项目并关闭 VCB 时,我无法在 VCA 中重新加载 TableView。
我找到了很多例子:
How can you reload a ViewController after dismissing a modally presented view controller in Swift?
How to call reload table view after you call dismissViewController in swift?
How to reload tableview from another view controller in swift
Update the data of a TableViewController after add item
Update the first view after dismissing Popover
Table view is not getting updated after dismissing the popover?
阅读后我尝试使用此代码:
**IN VCB**
import UIKit
protocol AddItemDelegateProtocol {
func didAddItem()
}
class VCB: UIViewController {
var delegate : AddItemDelegateProtocol?
...
}
@IBAction func saveButton(_ sender: Any) {
....
self.delegate?.didAddItem()
dismiss(animated: true, completion: nil)
}
**In VCA**
class VCA: UIViewController, UITableViewDelegate, UITableViewDataSource, AddItemDelegateProtocol {
let addItemVC = VCB()
...
override func viewDidLoad() {
super.viewDidLoad()
addItemVC.delegate = self
...
}
func didAddItem() {
self.tableView.reloadData()
}
但这不起作用。我不 明白我错在哪里。可以 你帮我吗?
编辑:我的解决方案 我是这样解决的:
我创建了一个我声明的单例:
class DataManager {
static let shared = DataManager()
var firstVC = VCA()
.....
}
那么,在 VCA 的 viewDidLoad 中:
DataManager.shared.firstVC = self
现在,在 VCB 的保存按钮中,我可以调用:
@IBAction func saveButton(_ sender: Any) {
........
DataManager.shared.firstVC.tableView.reloadData()
dismiss(animated: true, completion: nil)
}
【问题讨论】:
-
你是如何迁移到这个 VCB 的?显示它的代码
-
通过 VCA 中的按钮进行简单连接
-
@Aravind A R 感谢您的提示
-
您的解决方案解决了我的问题!感谢您的提示
-
很高兴有用
标签: ios uitableview uiviewcontroller