ios - 如何在 Swift 中从不同的 ViewController 重新加载 TableView 中的数据

标签 ios swift uiviewcontroller reloaddata

在 ViewController 中,我尝试在另一个 ViewController 中的 TableView 中重新加载数据,如下所示:

    (self.presentedViewController as! tableViewController).table.reloadData()

其中tableViewController是TableView Controller 中的类(我知道它不是大写驼峰式大小写),table是TableView。好吧,这样做会产生“ fatal error :在展开可选值时意外发现 nil”,我想这是有道理的,因为“presentedViewController”尚未加载。 我也尝试过这个:

    (self.navigationController!.viewControllers[self.navigationController!.viewControllers.count - 2] as! tableViewController).table.reloadData()

产生了相同的结果(我确保 tableViewController 位于 navigationController 堆栈上的当前 ViewController 之下)。我对我应该做什么感到困惑......我觉得引用不同 View Controller 中的属性应该更容易。我可能有点含糊;如果我是,请告诉我您需要知道什么!

最佳答案

Xcode 9 • Swift 4

创建通知名称:

extension Notification.Name {
    static let reload = Notification.Name("reload")
}

您可以发布通知

NotificationCenter.default.post(name: .reload, object: nil)

并在要重新加载数据的 View Controller 上添加一个观察者:

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(reloadTableData), name: .reload, object: nil)
}

@objc func reloadTableData(_ notification: Notification) {
    tableView.reloadData()
}

关于ios - 如何在 Swift 中从不同的 ViewController 重新加载 TableView 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276732/

相关文章:

ios - UIButton 没有被实例化

ios - UIEdgeInsetsMake 在单元格上创建一个奇怪的带,我不知道如何修复它

iphone - 在 QuickBlox 上创建位置

ios - 多个UITableView可以使用同一个UITableviewcell吗?

ios - Swift:日历应用程序 - 为更多字段着色

ios - 创建关系 Segues

javascript - 与远程数据库通信的 PhoneGap 应用程序

ios - 将 willSet block 分配给 iOS isResting 属性

ios - 在 Swift 中,如何等待一个动画在下一个动画开始之前完成?

ios - 无法访问 parentviewcontroller 的属性