gpt4 book ai didi

ios - 在tableView中点击不同的行后在collectionView中显示不同的数组

转载 作者:行者123 更新时间:2023-11-28 07:55:06 25 4
gpt4 key购买 nike

在我的 viewController 中,我有 tableViewcollectionView

当我点击中的不同的行时,我尝试在collectionView显示不同的数组表格 View

所以当我点击 tableView 中的 firstRow 时,我想在 collectionView 中显示 firstArray,当我点击 tableView 中的 secondRow,我想在 collectionView 中显示 secondArray,当我点击 thirdRow 时tableView 中,我想在 collectionView 中显示 thirdArray

我该怎么做?

我的测试代码:

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var tableView: UITableView!

var tableArray: [String] = ["1", "2", "3"]
var secondArray: [String] = ["One", "Two"]
var thirdArray: [String] = ["Three", "Four"]
var fourthArray: [String] = ["Five", "Six"]

// TABLEVIEW
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) as! TableCell
cell.tableLabel.text = tableArray[indexPath.row]
return cell
}

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

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

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCell", for: indexPath) as! CollectionCell
cell.collectionLabel.text = secondArray[indexPath.item]
return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
}
}

class TableCell: UITableViewCell {
@IBOutlet weak var tableLabel: UILabel!
}

class CollectionCell: UICollectionViewCell {
@IBOutlet weak var collectionLabel: UILabel!
}

我明白什么需要使用条件if,但是如何正确使用呢?

最佳答案

您可以使用索引作为键将您的数组添加到字典 (collectionData) 中,这样他们的查找是完全动态的,您不需要任何 if then else,所以你的代码可能是:

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var tableView: UITableView!

var tableArray: [String] = ["1", "2", "3"]

// you may want to feed the dictionary directly with the arrays (feel free to remove them)
var collectionData: [Int: [String]] = [:]
var secondArray: [String] = ["One", "Two"]
var thirdArray: [String] = ["Three", "Four"]
var fourthArray: [String] = ["Five", "Six"]

override func viewDidLoad() {
super.viewDidLoad()
self.collectionData[0] = secondArray
self.collectionData[1] = thirdArray
self.collectionData[2] = fourthArray
}

func getCurrentArray() -> [String]? {
let currentRow = self.tableView.indexPathForSelectedRow?.row ?? 0
let array = self.collectionData[currentRow]
return array
}

// TABLEVIEW
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) as! TableCell
cell.tableLabel.text = tableArray[indexPath.row]
return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.collectionView.reloadData()
}

// COLLECTIONVIEW
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.getCurrentArray()?.count ?? 0
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCell", for: indexPath) as! CollectionCell
cell.collectionLabel.text = self.getCurrentArray()?[indexPath.item]
return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
}
}

class TableCell: UITableViewCell {
@IBOutlet weak var tableLabel: UILabel!
}

class CollectionCell: UICollectionViewCell {
@IBOutlet weak var collectionLabel: UILabel!
}

关于ios - 在tableView中点击不同的行后在collectionView中显示不同的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48486128/

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