将数据传递给表视图控制器

Posted

技术标签:

【中文标题】将数据传递给表视图控制器【英文标题】: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吗? Passing Data between View Controllers的可能重复 @gutenmorgenuhu 我试过了,但我收到以下错误致命错误:在展开可选值时意外发现 nil 我该如何解决? 要回答这个问题,我们需要更多代码:错误发生在哪里,何时发生。等 @Okan 你点击我评论的链接了吗? 【参考方案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。

以上是关于将数据传递给表视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据传递给其他视图? [关闭]

如何在将数据推送到导航堆栈之前将数据传递给视图控制器并加载它?

如何将数据传递给嵌套控制器(UIContainerView)?

CodeIgniter 将数据传递给视图

将数据传递给 viewController

将数据传递给静态表 - 无法访问 TableViewCell 单元格值