gpt4 book ai didi

arrays - 单击collectionView转到另一个具有不同数组的collectionView

转载 作者:行者123 更新时间:2023-11-30 10:34:39 25 4
gpt4 key购买 nike

我对 swift 还很陌生,我想问一个问题。

我有三个 ViewController,前两个有 Collection View ,最后一个没有。

我拥有它,以便第一个 Controller 在 Collection View 中显示两个数组。第一个是字符串数组,第二个是图像数组,这样它们就可以在 Collection View 上正确排列。

这是我很难理解的。当单击 Collection View 单元格时,如何让它转到第二个 Controller (其中有另一个 Collection View )并显示完全不同的数组。我希望这样,对于每个单元格,我单击第一个 Controller 时,它每次都会显示不同但特定的数组。

当单击第二个 View Controller 集合单元格时,它将转到带有图像、标签和 TextView 的 View Controller ,本质上我需要为单击的每个单元格显示一组不同的数据。

我真的不知道从哪里开始,我相信这可能与字典有关,但我不知道从哪里开始。

这是我用于第一个带有 Collection View 的 View Controller 的代码


class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {


@IBOutlet weak var collectionView: UICollectionView!


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
collectionView.delegate = self
collectionView.dataSource = self

}


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize{
return CGSize(width: 160.0, height: 210.0)
}


func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return labelArray.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CollectionViewCell

cell.imageView.image = imageArray[indexPath.item]
cell.label.text = labelArray[indexPath.item]

return cell
}

}

我只是不知道从这里去哪里,任何帮助将不胜感激!谢谢![enter image description here ] 1

最佳答案

您需要实现func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)。请参阅Apple docs

在其中,您可以调用 segue,它会导航到下一个 Controller ,例如:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// Get selected row, you can then do something for each row
let selectedRow = indexPath.row // can also get indexPath.section or .item
self.performSegue(withIdentifier: "your identifier", sender: self)
}

如果您想将一些数据从第一个 Controller 传递到下一个 Controller ,您可以在override func prepareForSegue(segue: UIStoryBoardSegue, sender: AnyObject?) 中传递数据:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "your identifier" {
var dest = segue.destinationViewController as! YourViewControllerType
dest.anotherArray = ["whatever", "you", "want"]
}

当然,假设YourViewControllerType将有一个成员var anotherArray: [String]?(类型和名称当然可以更改)。

更好的方法是定义一个适当的模型类,它将保存目标 Controller 的数据。

关于arrays - 单击collectionView转到另一个具有不同数组的collectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58344100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com