自定義cell里的button獲得cell的indexpath



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

 

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  

{  

//自定義代碼  

return cell;   

 }  


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

 

 

UITableViewCell *cell = (UITableViewCell *)[btn superview];  

NSIndexPath *indexPath = [_myTableView indexPathForCell:cell];  

NSLog(@"indexPath is = %i",indexPath.row);  


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

 

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

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

 

 

UITableViewCell *cell = (UITableViewCell *)[[[btn superview] superview] superview];  

NSIndexPath *indexPath = [_myTableView indexPathForCell:cell];  

NSLog(@"indexPath is = %i",indexPath.row);  

 

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

 

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

 NSIndexPath *index1 =  [NSIndexPath indexPathForItem:row inSection:0];  

UITableViewCell *cell1 =  [_myTableView cellForRowAtIndexPath:index1];  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM