【问题标题】:Passing data to table view controller将数据传递给表视图控制器
【发布时间】:2015-05-07 14:48:24
【问题描述】:

我有一个视图控制器,并且我在这个视图控制器中有一个 tableview。我正在从表视图控制器管理表。但我需要从视图控制器向 tableview 控制器发送数据。我怎样才能做到这一点 ?

这是我的视图控制器:

class SettingsViewController: UIViewController {
...
}

这是我的表格视图控制器:

class SettingsTableViewController:UITableViewController {


    @IBOutlet var notificationsSwitch: UISwitch!
    @IBAction func notificationsClicked(sender: UISwitch) {
        if notificationsSwitch.on {
            println("notifications on")
        }else{
            println("notifications off")
        }
    }

}

故事板:

【问题讨论】:

  • 打印?那不是Java吗?
  • @gutenmorgenuhu 我试过了,但我收到以下错误致命错误:在展开可选值时意外发现 nil 我该如何解决?
  • 要回答这个问题,我们需要更多代码:错误发生在哪里,何时发生。等
  • @Okan 你点击我评论的链接了吗?

标签: ios uitableview swift


【解决方案1】:

将动作序列与 prepareForSegue 函数结合使用。本文所述:

Storyboards Tutorial in Swift: Part 2

为打开 SettingsTableViewController 的 push segue 添加一个标识符,并将以下函数添加到 ViewController。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if segue.identifier == "unwindToTableView" {
        let destinationController = segue.destinationViewController as! SettingsTableViewController
        destinationController.notificationsSwitch.setOn(true, animated:true)
    }
}

假设您想将一些 bool 从 settingsViewController 传递到表中,您将得到如下内容:

var notifications: Bool = false

在 Interface builder 中,向 push segue 添加一个标识符,如下所示:

编辑:最初稍微误解了这个问题,因为数据不是从 SettingsTableViewController 传递到 settingsViewController 而是相反。使用 segue 和 prepareForSegue 通常是将数据传递给另一个 viewController 的方式。

edit2:改变了在prepareForSegue函数中设置开关的方式。

【讨论】:

  • 我没有在这个操作中使用 segues。我听不懂你的回答。
  • segues 是在视图控制器之间传递数据的方式。我已经为您的问题编辑了答案。
  • 我现在明白了。但我还有一个问题。我正在从服务器获取数据,所以我需要等待数据,然后当它出现时,我需要在 segue 中使用。我该怎么做?
  • @RuudKalis,“是要走的路。”仅当您使用 segues 时。 (我认为 OP 正在使用)。
  • 同意@Firo.. 看着 Okan 的 IB 构建器屏幕截图,有一个用于打开 SettingsTableViewController 的 push segue。
猜你喜欢
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2019-12-26
  • 1970-01-01
相关资源
最近更新 更多