在Swift中将数据从表格视图传递到选项卡视图控制器。

3

在我的故事板中,有一个视图控制器带有一个表格视图,放置在标签栏控制器之前。这个标签栏有两个视图控制器。之前我已经使用了表格视图,当我点击其中一个单元格时,我传递到另一个视图控制器,加载另一个带有表格和单元格的视图控制器,并使用来自第一个表格中推送单元格的ID。像这样:

表格视图控制器,为segue准备:

        if segue.identifier == "overviewSegue" {
          var caseViewController: CaseViewController = segue.destinationViewController as CaseViewController
          var caseIndex = overviewTableView!.indexPathForSelectedRow()!.row
          var selectedCase = self.cases[caseIndex]
        caseViewController.caseitem = selectedCase
    }

这很有效。现在我想做同样的事情,但唯一的区别是最后一个视图控制器是选项卡栏控制器的一部分。问题是我无法使数据传递到此最后一个表视图控制器。
我尝试了几种方法,但我无法将数据指向选项卡表视图。转场不可靠,目标不是表视图控制器,而是选项卡控制器等。问题是如何从表视图通过选项卡控制器传递数据到另一个视图控制器。
1个回答

6

我找到了一个解决方案:


    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
      if segue.identifier == "toTabController" {
        var tabBarC : UITabBarController = segue.destinationViewController as UITabBarController
        var desView: CaseViewController = tabBarC.viewControllers?.first as CaseViewController

        var caseIndex = overviewTableView!.indexPathForSelectedRow()!.row
        var selectedCase = self.cases[caseIndex]

        desView.caseitem = selectedCase
      }
    }

简单解释:您需要进入选项卡栏控制器并选择其视图控制器。通常有两个,所以您可以选择第一个。之后,定义它属于哪个类,并像以前一样传递数据。


1
对于那些试图使用这个建议的人来说,它可以用来获取第一个选项卡的数据,但是你需要一个模型来传输数据到第二个选项卡。 - jessi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接