如何从另一个controlview swift 3重新加载tableview?

时间:2017-05-04 09:54:07

标签: ios swift uitableview swift3 favorites

在我的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])
    }

2 个答案:

答案 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)