【问题标题】:Swift - pass data from tableview to third viewcontrollerSwift - 将数据从 tableview 传递到第三个 viewcontroller
【发布时间】:2017-03-09 19:16:06
【问题描述】:

我有太多代码无法全部粘贴,所以我会含糊其辞。我想我只需要大致了解该做什么,然后我就能做到。

我有一张漂亮的桌子,上面有当地企业的清单。当您单击一个时,它会打开 DetailView,其中包含有关该业务的一些重要信息。我在 DetailView 上有一个 MAP 按钮,它触发 Thirdview 里面有一个 Mapview。

我在从 Thirdview 的 TableView 的单元格中检索数据时遇到问题。

我的看法:

表格视图 => 细节视图 => 第三视图

在我的 Thirdview 中,我可以调用 Tableview 中的信息吗?

或者更容易将信息从DetailView传递到Thirdview?

谢谢!

【问题讨论】:

  • 我会将数据传递到详细视图,然后在prepareForSegue 中,将数据传递到第三个视图。
  • 知道了。所以 prepareForSegue 是最好的选择。我想我需要弄清楚在 prepareForSegue 中放什么。有什么建议么? @dstepan
  • 我会发布一个应该为你解决的答案。
  • 见下面我的回答。如果数据总是相同,您也可以创建一个单例,但这可能不是您的最佳方法。
  • 那要看派生的数据了,如果tableView控制器中有数据需要在第三个viewController中显示而不需要在第二个viewController中,就不需要让第二个(详细信息 viewController) 来保存它。有几种方法可以实现这一点,委托可能是一个不错的选择。

标签: ios swift uitableview segue


【解决方案1】:

表格视图

var objects: [MyObject] = []

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let myObject = objects[indexPath.row]

}

override func prepare(for segue: UIStoryboardSegue, sender: Any) {

    if segue.identifier == "mySegue" {

        let detailVC = segue.destination as! MyDetailVC

        detailVC.dataFromTableView = myObject

    }

}

详细视图

var dataFromTableView = MyObject()

override func prepare(for segue: UIStoryboardSegue, sender: Any) {

    if segue.identifier == "mySegue" {

        let thirdVC = segue.destination as! MyThirdViewController

        thirdVC.dataFromDetailView = dataFromTableView

    }

}

第三视图

var dataFromDetailView = MyObject()

override func viewDidLoad() {

    print(dataFromDetailView)

}

【讨论】:

  • 你太棒了。一旦我弄清楚如何将所有变量转换为我的变量,这绝对有效:) @dstepan
猜你喜欢
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
相关资源
最近更新 更多