繁体   English   中英

强制触摸UI​​TableViewCell内的UICollectionView

[英]Force touch on UICollectionView inside of UITableViewCell

我有一个带有Tableview的viewController,多个TableViewCells和每个TableViewCell,一个带有多个UICollectionViewItems的UICollectionView。 每个collectionView项都有一个标签和图像视图。 我正在努力让3d触摸工作,以便用户通过强制触摸tableCell的不包含集合视图的区域来窥视和弹出,预览并弹出到一个视图控制器然后能够执行与collectionView中的一个图像相同但预览并弹出到另一个视图控制器中。 我有第一个场景正常工作,当开始强制触摸和“偷看”时,tableCell在屏幕上保持清晰。 我一直坚持让它在集合视图中工作,无论我做什么,只有一个图像视图框架在第一个tableview行上保持清晰,无论我实际按下哪一行。 代码如下:

    func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {

    //get the tableviewCell
    if let tableCellPath = tableView.indexPathForRow(at: location) {
        print("tableCellPath=", tableCellPath)
        if let tableCell = tableView.cellForRow(at: tableCellPath) as? VenueMainTableViewCell {
            //user tapped on a beer in the collectionview
            if let collectionView = tableCell.collectionView {
                let collectionPoint = collectionView.convert(location, from: tableView)
                if let cvPath = collectionView.indexPathForItem(at: collectionPoint) {
                    let collectionViewCell = collectionView.cellForItem(at: cvPath) as? VenueMainCollectionViewCell

                    let cvFrame = collectionViewCell?.itemLabelImageView.frame

                    let bc = storyboard?.instantiateViewController(withIdentifier: "itemDetail") as! ItemDetailViewController
                    let ven = UTcheckin.sharedInstance.Venues[collectionView.tag]
                    let selectedItem = ven.ItemsAtVenue[(collectionViewCell?.tag)!]
                    bc.item = selectedItem

                    previewingContext.sourceRect = cvFrame!

                    return bc
                }
            }
        }
        if let tablePath = tableView.indexPathForRow(at: location) {
            //user tapping on a venue, this works
            previewingContext.sourceRect = tableView.rectForRow(at: tablePath)
            let vc = storyboard?.instantiateViewController(withIdentifier: "venueDetail") as! VenueDetailViewController
            vc.venue = UTcheckin.sharedInstance.Venues[tablePath.row]

            return vc
        }
        return nil
    }
    return nil
}

看起来我需要获取集合视图项图像视图的矩形,但是如何访问它,因为它在表格单元格中? 提前感谢任何指针。

我认为这个解决方案与UITableView相同。 您必须使用registerForPreviewingWithDelegate方法注册每个单元格以进行预览。 您应该在cellForRow方法中注册它。

这应该对你很有帮助。 特别是The Solution段落:


如何窥视和弹出UITableViewCell内部的特定视图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM