UITableView獲取cell的indexPath

UITableView獲取cell的indexPath

 (2014-02-20 15:03:58)
標籤: 

iphone

 

ios

 

ipad

 

it

 
分類: ios-dev

假如你是用代碼方式直接將控件(如UILabel、UIButton等)加到UITableView的cell中去的話,,,在出了

 

  1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
  2. {  
  3.    //自定義代碼  
  4.   return cell;   
  5.  }  

這個函數後,,,當你點擊cell的時候想知道到底是點擊了第幾行,,這時候你就可以通過在以下代碼獲得點擊的行數。

 

 

  1. UITableViewCell *cell = (UITableViewCell *)[btn superview];  
  2. NSIndexPath *indexPath = [_myTableView indexPathForCell:cell];  
  3. NSLog(@"indexPath is = %i",indexPath.row);  

註釋:btn是你通過代碼的方式添加到cell的一個Button,_myTableView是UITableView的一個關聯變量。

 


假如你是通過新建 .xib的方式新建一個繼承UITableViewCell的 .xib(例如:shopCell.xib)文件添加到原有UITableView的cell的方式的話,,,用上面這種方法是獲取不到點擊cell所在的行數的,也就是說你不知道點擊的cell到底是第幾行。


同樣可以用上面的代碼,,不過要稍微修改一下:

 

  1. UITableViewCell *cell = (UITableViewCell *)[[[btn superview] superview] superview];  
  2. NSIndexPath *indexPath = [_myTableView indexPathForCell:cell];  
  3. NSLog(@"indexPath is = %i",indexPath.row);  


解釋:第一句代碼中的[btn superview]是shopCell 的contentView,第二個superview是shopCell自己本身的cell,第三個superview是UITableView的cell,,注意不要弄混淆了。

 



20131024再次編輯:

知道row,然後通過row確定是哪一行的cell

 

  1. NSIndexPath *index1 =  [NSIndexPath indexPathForItem:row inSection:0];  
  2. UITableViewCell *cell1 =  [_myTableView cellForRowAtIndexPath:index1];  



轉自:http://blog.csdn.net/chaoyuan899/article/details/12972131
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章