Select UICollectionView 选择上的 UITableView
Select the UITableView on UICollectionView selection
我在UITableViewCell
里面有一个UICollectionView
。当我 select tableView
行时,我不希望 UICollectionView
的 didSelectItemAtIndexPath:
方法被调用。相反,我希望调用 UITableView
的 didSelectRowAtIndexPath:
方法。我如何在 didSelectItemAtIndexPath:
中调用 didSelectRowAtIndexPath:
?
设置 collectionView.allowsSelection = NO
以禁用选择。
或者在 didSelectItemAtIndexPath
方法中,获取 UITableViewCell 并调用委托,它是具有 UITableView 的 table 视图:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *parentCell = collectionView.superview;
[parentCell.delegate collectionViewDidSelectedAtCell:parentCell];
}
// IN your view controller that has the table view
- (void)collectionViewDidSelectedAtCell:(UITableViewCell *)cell{
NSIndexPath *index = [self.tableView indexPathForCell:cell];
[self tableView:self.tableView didSelectRowAtIndexPath:index];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
Swift 3
首先设置如下
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let parentCell: QMatrixCell? = collectionView.superview?.superview as! QMatrixCell?
parentCell?.delegate.collectionViewDidSelectedAtCell(cell: parentCell!)
}
并在包含您的表视图的控制器中执行以下操作
extension TableViewController: SelectionCell{
func collectionViewDidSelectedAtCell(cell : QMatrixCell){
let index: IndexPath? = tableView.indexPath(for: cell)
tableView(tableView, didSelectRowAt: index!);
}
}
protocol SelectionCell {
func collectionViewDidSelectedAtCell(cell : QMatrixCell);
}
并且不要忘记在您的 tableView 单元格中设置委托。
我在UITableViewCell
里面有一个UICollectionView
。当我 select tableView
行时,我不希望 UICollectionView
的 didSelectItemAtIndexPath:
方法被调用。相反,我希望调用 UITableView
的 didSelectRowAtIndexPath:
方法。我如何在 didSelectItemAtIndexPath:
中调用 didSelectRowAtIndexPath:
?
设置 collectionView.allowsSelection = NO
以禁用选择。
或者在 didSelectItemAtIndexPath
方法中,获取 UITableViewCell 并调用委托,它是具有 UITableView 的 table 视图:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *parentCell = collectionView.superview;
[parentCell.delegate collectionViewDidSelectedAtCell:parentCell];
}
// IN your view controller that has the table view
- (void)collectionViewDidSelectedAtCell:(UITableViewCell *)cell{
NSIndexPath *index = [self.tableView indexPathForCell:cell];
[self tableView:self.tableView didSelectRowAtIndexPath:index];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
Swift 3
首先设置如下
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let parentCell: QMatrixCell? = collectionView.superview?.superview as! QMatrixCell?
parentCell?.delegate.collectionViewDidSelectedAtCell(cell: parentCell!)
}
并在包含您的表视图的控制器中执行以下操作
extension TableViewController: SelectionCell{
func collectionViewDidSelectedAtCell(cell : QMatrixCell){
let index: IndexPath? = tableView.indexPath(for: cell)
tableView(tableView, didSelectRowAt: index!);
}
}
protocol SelectionCell {
func collectionViewDidSelectedAtCell(cell : QMatrixCell);
}
并且不要忘记在您的 tableView 单元格中设置委托。