在我的iOS应用程序中,我有一个DetailController和FavoriteViewController用于喜爱的单词如何在添加单词后自动重新加载表格视图?
在DetailController中将数据发送到我的数据库很有趣
0123456789 - matched
555.123.4567 - matched
这是我的FavoriteViewController
@IBAction func favs(_ sender: UIButton) {
if listMean[sender.tag].Favorite == 1 {
listMean[sender.tag].Favorite = 0
}
else {
listMean[sender.tag].Favorite = 1
}
Singleton.ShareInstance.dbHelper.updateFavorite(newMean: listMean[sender.tag])
}
答案 0 :(得分:0)
您可以使用委托模式或回调方法。 代表模式: 你应该创建一个协议
protocol FavoriteDetailDelegate {
func updateTableView() }
您的视图控制器符合您的委托协议
extension FavoriteViewController: FavoriteDetailDelegate {
func updateTableView() {
print("Something update etc ...")
} }
并且您的详细信息页面是委托您的表格视图:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailSegue" {
let detailVC = segue.destination as! FavoriteDetailViewController
detailVC.delegate = self
}
}
您可以在详细视图控制器中更新
@IBAction func update(_ sender: UIButton) {
delegate.updateTableView()
}
或者您可以使用回调方法: 在详细信息视图控制器中创建回调
var callback: ((String) -> Void)!
@IBAction func update(_ sender: UIButton) {
callback("test")
}
视图控制器中的
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailSegue" {
let detailVC = segue.destination as! FavoriteDetailViewController
detailVC.callback = {
str in
print("String \(str)")
}
}
}
答案 1 :(得分:0)
为重载表添加观察者
NotificationCenter.default().addObserver(self, selector: Selector(("relodaTableview")), name: "loadedPost", object: nil)
从另一个视图控制器那里你想重新加载FavoriteViewController发布通知表以便重新加载
NotificationCenter.default().post(NSNotification(name: "loadedPost" as NSNotification.Name, object: nil) as Notification)