从 UITable 中获取 UICollectionView 的 indexPath

Posted

技术标签:

【中文标题】从 UITable 中获取 UICollectionView 的 indexPath【英文标题】:Get indexPath of UICollectionView from UITable within 【发布时间】:2017-01-18 20:18:41 【问题描述】:

我尝试实现UITapGestureRecognizer 以从tableView 中获取collectionViewindexPath.row

我也尝试过委托,但它似乎不起作用。

protocol PassingCellDelegate 
    func passingIndexPath(passing: KitchenVC)


class ViewController: UIViewController 
    let tap =  UITapGestureRecognizer(target: self, action: #selector(tapSwitchTableViewCollection))

    var delegate: PassingCellDelegate?

    @IBAction func buttonCompletedTapped(sender: AnyObject) 
        delegate?.passingIndexPath(passing: self)
    

    func tapSwitchTableCollection(sender: UITapGestureRecognizer) 

    if let cell = sender.view as? KitchenCollectionViewCell, let indexPath = collectionKitchen.indexPath(for: cell) 
        if self.selectedIndexPaths == indexPath 

            print("This in IF")
            print(indexPath)
            self.selectedIndexPaths = IndexPath()

         else 

            print("This in ELSE")
            print(indexPath)
            self.selectedIndexPaths = indexPath

        
    

Cell 类,其中 tableView 包含在 CollectionViewCell 中

class CollectionCell: UICollectionViewCell, UITableViewDelegate, UITableViewDataSource, PassingCellDelegate 

    func passingIndexPath(passing: KitchenVC) 

        passing.tapSwitchTableCollection(sender: passing.tap)

    


    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
        var cell: UITableViewCell? = tableView.dequeueReusableCell(withIdentifier: "OrdersCell")

        if tableView == ordersTableView 

            passingIndexPath(passing: KitchenVC())

        


我从这篇文章中得到了tapSwitchTableCollection 的方法:

点击here!

【问题讨论】:

你有tableview里面的collection view吗? 我在 collectionView 中有一个 tableView,并想从其中的 tableView 中获取 indexPath.row。我无法使用 collectionView 中的 didSelectItemAt,因为我希望从 didSelectRowAt 中的 tableView 触发点击 我遇到了类似的问题,我在 tableView 中有一个完全一样的 collectionView。如果您熟悉 Objective C,我将向您展示一些代码,我是如何在不使用手势的情况下实现它的。如果您对我发布答案感兴趣,请告诉我。 感谢 Florentt,但我设法找到了解决方案 【参考方案1】:

我设法用这个得到了正确的 indexPath

protocol CustomCellDelegate  func passingIndexPath(passing: KitchenVC) 

    class ViewController: UIViewController 

        var delegate: PassingCellDelegate?

        @IBAction func buttonCompletedTapped(sender: AnyObject) 
            delegate?.passingIndexPath(passing: self)
        

        func completedTapped(cell: KitchenCollectionViewCell) 

            var thisIndex = collectionKitchen.indexPath(for: cell)
            currentIndex = (thisIndex?[1])!

            // This returns indexPath.row from the collectionView
        
    

【讨论】:

以上是关于从 UITable 中获取 UICollectionView 的 indexPath的主要内容,如果未能解决你的问题,请参考以下文章

如何使 UIButton 从 UITable 中的选择中播放相应的音频剪辑?

从 firebase 数据库中检索数据并在 Objective-C 中的 UITable 中显示

从数组向 UITable 添加行

如何从相机胶卷中挑选照片

如何在代码中使用 UItable 单元中的按钮插座

Obj-C UITable 没有填充 MutableArray