问题描述
我有一个带有 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
}
}
}