当前位置: 首页 > 面试题库 >

如何在Swift中从另一个ViewController重新加载TableView中的数据

马凡
2023-03-14
问题内容

在一个ViewController中,我试图像这样在另一个ViewController中的TableView中重新加载数据:

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

其中tableViewController是TableView控制器中的类(我知道这不是大写字母),而table是TableView。好吧,这样做会产生“致命错误:在展开可选值时意外发现nil”,并且我想这是有道理的,因为尚未加载“
presentedViewController”。我也尝试过这个:

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

产生相同的结果(我确保tableViewController在navigationController堆栈上的当前ViewController下)。我对应该做什么感到困惑…我觉得应该更容易在不同的视图控制器中引用属性。我可能有点含糊。如果是,请告诉我您需要了解的信息!


问题答案:

Xcode 9•Swift 4

创建一个通知名称:

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

您可以发布通知

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

并在视图控制器上添加一个您要重新加载数据的观察者:

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

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


 类似资料:
  • 问题内容: 我有一个想要完全适应我想要的应用程序 我一直在关注Seemu Apps的Youtube教程,但是我需要添加一个可选的ViewController来完成它 该应用程序有2个显示车辆的tableViews,如果我们单击第一个tableView的一行,则第二个tableView将向我们显示选定车辆的列表。 这是到目前为止我们所拥有的:(图像链接,因为我在stackOverFlow上没有十分的

  • 问题内容: 我有以下内容: 我如何从另一个ViewController 访问? 我需要访问此功能: 问题答案: 默认情况下,swift中的所有内容都是公开的,因此,如果您声明以下内容: 只要拥有它的实例,就可以访问它:

  • 问题内容: 如何快速隐藏第一个ViewController或特定ViewController的导航栏? 我在中使用了以下代码: 以及: 两种方法都对所有ViewController隐藏导航控制器。 问题答案: 如果您知道其他所有视图都应显示该栏,则可以将其重新设置为可见。 在Swift中:

  • 我有一个自定义的,我希望将作为从一传递到二(这是模态)。问题是,当我使用在之间切换时,函数不会被触发,因为处理我假设的转换。 那我该怎么做呢?如何将从一个传递到下一个。

  • 问题内容: 我是Swift的新手,我想知道如何解散当前的视图控制器并转到另一个视图。 我的故事板如下:MainMenuView-> GameViewController-> GameOverView。我想关闭GameViewController转到GameOverView,而不是MainMenuView。 我在MainMenuView中使用以下代码: 在GameViewController中,我使

  • 问题内容: 我刚开始使用快速语言,并且知道这个问题是重复的。我发现了几个类似的问题和答案,但我无法弄清这个问题。 我想将ScandString变量的值从ScanViewController传递给ResultViewController。 ScanViewcontroller如下: ResultViewController如下: println(detectedString)没有给我任何结果。问题是