2016-08-02 120 views
0

如何處理didSelectRowAtIndexPath,以便它可以在它的每個單元格的所有三個不同的單元格上工作?我有一個tableview與多個單元格在它和每個單元格有tableview,collectionview,tableview,就像那

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 
 
{ 
 

 

 
}

+0

請更多的細節解釋一下嗎? –

+0

在我上傳的圖片中,像olx,Naukri.com這樣的數據顯示出來,他們在收集視圖和像Rice這樣的數據都在tableview中,我希望他們能夠將它們傳遞給webview。 –

+0

不要爲主tableView實現didSelectRowAtIndexPath。相反,爲TrafficCell,NewsCell,CategoryCell創建委託並相應地處理其功能。 –

回答

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 
} 
+0

感謝@iShashok爲此答覆。 –