在自定义TableViewCell内从didSelectItemAt自定义CollectionViewCell更改视图控制器

时间:2018-11-15 04:54:32

标签: ios swift uicollectionview

我在tableview单元格内有一个集合视图,因此我想选择集合视图单元格,然后转到另一个视图控制器。那我该怎么做呢?

我已经尝试过自己,它要么什么都不做,要么“应用程序试图以模态方式显示一个活动的控制器”,要么“试图在视图不在窗口层次结构中的..上呈现..”。

1 个答案:

答案 0 :(得分:2)

单元格类(单元格类外部)中添加delegate并在类内声明变量:

protocol CellSelectedDelegate { //Name them as you want
    func cellSelected()
}
class TableCell: UITableViewCell {
    var delegate: CellSelectedDelegate?
}

然后在单元格的didSelectItem中:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
   delegate?.cellSelected()
}

现在转到具有tableView datasourcedelegate方法的 controller 类(假设它们在controller类中,而不是在另一个视图中),并将其添加到 cellForItem 方法:

cell.delegate = self

最后,在控制器类中实现custom delegate方法:

extension YourController: CellSelectedDelegate {
    func cellSelected() {
       //Present next controller here
    }
}