gpt4 book ai didi

ios - 单击 tableview 中的 collectionview 单元格导航

转载 作者:行者123 更新时间:2023-11-28 10:13:26 24 4
gpt4 key购买 nike

我有一个 tableview 单元格,我在其中添加了 collectionview 单元格(用于水平滚动)。

现在我想在按下水平 collectionview 的任何单元格时推送到其他导航 Controller 。怎么做 ?或者我如何为单元格按下定义委托(delegate)方法。

代码:

ViewController.swift :

class ViewController: UIViewController {
var categories = ["Action", "Drama", "Science Fiction", "Kids", "Horror"]
}

extension ViewController : UITableViewDelegate { }

extension ViewController : UITableViewDataSource {

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

func numberOfSections(in tableView: UITableView) -> Int {
return categories.count
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CategoryRow
return cell
}

}

CategoryRow.swift

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

extension CategoryRow : UICollectionViewDataSource {

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

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

}

extension CategoryRow : UICollectionViewDelegateFlowLayout {

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> 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)
}

}

VideoCell.swift

class VideoCell : UICollectionViewCell {

@IBOutlet weak var imageView: UIImageView!
}

最佳答案

在这里,您将在委托(delegate)方法中获得单元格点击 didSelectItemAtIndexPathCategoryRow类,从那里你可以解雇一个代表在里面接电话ViewControllerViewController.swift :

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CategoryRow
cell.delegate = self
return cell
}

VideoCell.swift:

    protocol CategoryRowDelegate:class {
func cellTapped()
}

CategoryRow.swift:

    class CategoryRow : UITableViewCell {
weak var delegate:CategoryRowDelegate?
@IBOutlet weak var collectionView: UICollectionView!
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if delegate!= nil {
delegate?.cellTapped()
}
}

ViewController里面添加委托(delegate)函数

func cellTapped(){
//code for navigation
}

关于ios - 单击 tableview 中的 collectionview 单元格导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45030010/

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