如何访问TableView单元格中包含的CollectionView的单元格中的按钮标记

时间:2017-07-05 04:55:24

标签: ios objective-c swift tableview collectionview

我正在开展一个项目,其中performance我的视图层次结构中的UICollectionView如下所示:

  • TableViewCell
    • 的CollectionView
      • CollectionView Cell
        • 按钮(我想为其访问知道tagValue)。

我有两个表格视图单元格,每个tableView单元格中有一个UITableViewCell.而每个UICollectionView包含4 UICollectionView,所以我想知道我的按钮中包含的确切tagValue每当按下时UICollectionViewCell。 我还给了 cellForItem atIndexpath TableView单元类中的按钮标签值,如此

UICollectionViewCell

我也给了按钮选择器。

2 个答案:

答案 0 :(得分:1)

试试这个:

删除此行:

cell.button.tag = indexpath.item

添加此功能

 @IBAction func clickCollectionCellButton(sender : UIButton){
            var cell: UICollectionViewCell? = (sender.superview?.superview as? UICollectionViewCell) //track your view hierarchy
            var indexpath: IndexPath? = collectionView?.indexPath(for: cell!)
           // do your additional work
        }

答案 1 :(得分:0)

无需分配标记值,您可以直接在按钮中获取单元格indexPath

假设您为按钮指定一个选择器,如下所示: -

@IBAction function buttonAction(_ sender:UIBUtton){
      if let indexPath = viewIndexPathInCollectionView(sender , collView:pass your collectionView here){
         // here you will get indexPath of your collectionView Cell
         print(indexPath.item)  
      } 
}

使用此函数通过在此函数中传递单元格项来获取集合视图单元格的索引

func viewIndexPathInCollectionView(_ cellItem: UIView, collView: UICollectionView) -> IndexPath? {
    let pointInTable: CGPoint = cellItem.convert(cellItem.bounds.origin, to: collView)
    if let cellIndexPath = collView.indexPathForItem(at: pointInTable){
        return cellIndexPath
    }
    return nil

}