如何从TableViewCell上的Custom CollectionViewCell推送VC?

时间:2016-10-04 10:10:47

标签: ios swift uicollectionview

我有一个tableView和Cell,在Cell上我有collectionView并在其上显示一些内容。

我想发送一个关于indexPath选择的链接。

我想从CollectionViewCell上的自定义TableViewCell推送/显示我的观看次数。

class secondTopicTableViewCell: UITableViewCell {
    @IBOutlet weak var relatedCustom: UICollectionView!
    var relArray  = NSArray()
     func loadArray(arr: NSArray) {
        self.relArray = arr
        self.relatedCustom.reloadData()
    }
}

extension secondTopicTableViewCell : UICollectionViewDataSource {

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

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("collection", forIndexPath: indexPath) as! relatedCollectionViewCell
        let info = self.relArray.objectAtIndex(indexPath.row) as! specificTopicInfo
        cell.showInfo(info)
        return cell
    }
}



extension secondTopicTableViewCell : UICollectionViewDelegate {

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

        let relatedTopic =  self.relArray.objectAtIndex(indexPath.row)  as! specificTopicInfo

        let str  = relatedTopic.relatedLink!
        print(str)
    }
}



class relatedCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var relatedLabel: UILabel!

    func showInfo(info: specificTopicInfo) {
        relatedLabel.backgroundColor = UIColor.grayColor()
        relatedLabel.text = info.relatedTitle
    }
} 

2 个答案:

答案 0 :(得分:0)

您只需使用与Tableview控件相同的 didSelectItemAtIndexPath 进行导航。 将导航代码写入Collectionview的 didSelectItemAtIndexPath

答案 1 :(得分:0)

如果要在表格视图单元格中嵌套集合视图,并且想要从显示第一个单元格的表格视图中触发操作,则可以执行两项操作。

第一

您可以使用UICollectionViewDelegate协议来捕获用户与集合视图单元的交互。

不要忘记将表格视图单元格设置为其集合视图的委托。

第二

您可以创建自己的协议(当单元格有多个按钮时很有用。)

然后,每个按钮都有自己的“didTap”方法,而不是原始集合视图委托中的“didSelect”方法。