如何通过其他两个ViewController将数据从UICollectionView所选单元格传递到TabBarController

问题描述

我有一个带有 scrollView VC(mainVC),其中具有多个collectionViews (作为部分),每个collectionView具有多个单元格。对于每个单元格,我在数组中有不同的值,我想在连接到 TabBarController 的另一个VC( tableViewController )中显示

mainVC是通过segue(而不是通过单元)连接的。

我已经实现了 prepare(for segue:)函数,该函数如何通过 if collection.tag == Int 传递数组到所有点击的单元格(明显)。因此,数据可以正确传递,我只是想不出如何实现indexPath.item以在tableView中正确显示所选单元格的数据。

例如:collection1->单元格[0]-> tableview(array1),collection1->单元格[1]-> tableview(array2),collection2-> cell [0]-> tableview(array3)等

我尝试了许多不同的方法,甚至通过didSelectItemAt在每个Collection视图以及case,Path和IndexPath.Row的情况下都使用switch语句,但是也不应该以这种方式传递数据(?)

代码

var skuskaValues1:NSArray = ["Skuska 1A","Skuska 1B","Skuska 1C"]

var skuskaValues2:NSArray = ["Skuska 2A","Skuska 2B","Skuska 2C"]

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

    
    if segue.identifier == "Skuska" {


        if collectionView.tag == 0 {

        }
       if collectionView.tag == 1 {

        }


    }
}

在didSelectItemAt中:

let VC1 = self.tabBarController?.viewControllers?[0] as! SkuskaTableViewController

switch collectionView {
    case basicsCollectionView:
        switch indexPath.item {
        case 0:


            performSegue(withIdentifier: "Skuska",sender: collectionView)
            VC1.skuskaValues = skuskaValues1 as! [String]

        case 1:
            performSegue(withIdentifier: "Skuska",sender: collectionView)
            VC1.skuskaValues = skuskaValues2 as! [String]
        default:
            print("something")
        }

谢谢您的任何建议

解决方法

与其在VC1上声明didSelectItemAt,不如在prepare(for segue:)上声明

例如

    override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
        if segue.identifier == "Skuska" {
            if let destVC = segue.destination as! YourViewControler {
                destVC.yourVariable = valueYouWantToPass
            }
        }
    }