gpt4 book ai didi

ios - UITableview 中的 UICollectionView - 获取点击的 UICollectionView 的标签

转载 作者:可可西里 更新时间:2023-11-01 01:31:06 24 4
gpt4 key购买 nike

我在 UITableView 中添加了 UICollectionView。现在,我想确定用户点击了哪个单元格以及该 UICollectionView 的 indexPath。

我正在获取正确的 indexPath 但无法获取他点击的 UICollectionView 的标签。我正在做这样的事情来获得点击

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
print("\(collectionView.tag) ---- \(indexPath.item) ")
}

完整代码

class UserLibraryViewController: UIViewController {

extension UserLibraryViewController : UITableViewDelegate { }

extension UserLibraryViewController : UITableViewDataSource {

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return myBooksGenre[section]
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return myBooksGenre.count
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("userBooksTableViewCell") as! UserLibraryTableViewCell
return cell
}
}

TableViewCell

class UserLibraryTableViewCell: UITableViewCell {
@IBOutlet weak var collectionView: UICollectionView!
}

extension UserLibraryTableViewCell : UICollectionViewDataSource {

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

return 12
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("userBooksCollectionViewCell", forIndexPath: indexPath) as! UserLibraryCollectionViewCell



return cell
}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

print("\(collectionView.tag) ---- \(indexPath.item) ")


}
}

extension UserLibraryTableViewCell : UICollectionViewDelegateFlowLayout {

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let itemsPerRow:CGFloat = 4
let hardCodedPadding:CGFloat = 5
let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding
let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding)
return CGSize(width: itemWidth, height: itemHeight)
}

}

最佳答案

您的 tableView 中有多个部分,因此您可以在 UserLibraryTableViewCell 中创建一个 NSIndexPath 实例并在 中初始化它>cellForRowAtIndexPath 就像这样。

class UserLibraryTableViewCell: UITableViewCell {

var tableIndexPath: NSIndexPath?

}

现在在 cellForRowAtIndexPath 中设置此 tableIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("userBooksTableViewCell") as! UserLibraryTableViewCell
cell.tableIndexPath = indexPath
return cell
}

现在在 collectionViewdidSelectItemAtIndexPath 中访问 tableIndexPath 像这样。

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

print("\(self.tableIndexPath) ---- \(indexPath.item) ")
}

关于ios - UITableview 中的 UICollectionView - 获取点击的 UICollectionView 的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39362240/

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