我有一个包含多个单元格的tableview,并且每个单元格都有tableview,collectionview,tableview等

时间:2016-08-02 06:04:54

标签: ios objective-c xcode uitableview tableviewcell

如何处理 didSelectRowAtIndexPath ,以便它适用于其中每个单元格的所有三个不同单元格?

Preview

Flow of my code

- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if([[dataArray[indexPath.row] valueForKey:@"type"] isEqual:@"Traffic" ])
        {
            if(!TrafficCell)
            {
                TrafficCell = [tableView dequeueReusableCellWithIdentifier:@"CollectionVIewTableViewCell" forIndexPath:indexPath];
                NSDictionary *dict=dataArray[indexPath.row];
                TrafficCell.Traffic = [dict valueForKey:@"detail"];
                [TrafficCell.collectionView reloadData];
                return TrafficCell;
            }
            return TrafficCell;
        }
    else if([[dataArray[indexPath.row] valueForKey:@"type"] isEqual:@"News"])
    {
        if(!NewsCell)
        {
            NewsTableViewCell *cell = (NewsTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"NewsTableViewCell" forIndexPath:indexPath];
            NSDictionary *dict=dataArray[indexPath.row];
            cell.News = [dict valueForKey:@"detail"];
            [cell.NewsTableView reloadData];
            return cell;
        }
        return NewsCell;
        
    }
    
        else
        {
            if(!CategoryCell)
            {
        CategoryCell= [tableView dequeueReusableCellWithIdentifier:@"CategoryTableViewCell" forIndexPath:indexPath];
                NSDictionary *dict=dataArray[indexPath.row];
                CategoryCell.Category = [dict valueForKey:@"detail"];
                [CategoryCell.CategorycollectionView reloadData];
                return CategoryCell;
            }
            return CategoryCell;
        }
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{


}

1 个答案:

答案 0 :(得分:0)

您可以按照UITableViewCell方法

中的实施方式轻触cellForRowAtIndexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
           NSDictionary *dict = dataArray[indexPath.row];
           UITableViewCell *cell = [tableView cellForRowAtIndexPath: indexPath];
           if([dict[@"type"] isEqual:@"Traffic" ]){
              //Find your collectionView in cell
              //Tap on Traffic cells
           }
           else if([dict[@"type"] isEqual:@"News"]){
              //Tap on News cells 
           }
           else {
                //Tap on other cells
           }
    }

cellForRowAtIndexPath你需要

TrafficCell.collectionView.delegate = self;
CategoryCell.CategorycollectionView.delegate = self;

用于UICollectionViewCell上的句柄点击并实施UICollectionViewDelegate方法

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
   //Tapped on your collectionViewCell inside the uitableviewcell
}