ios開發(fā)獲取button背后的cell

ios的tableView是平時開發(fā)中用到的最常用的控件之一,通過自定義cell我們可以實現(xiàn)各種各樣的效果.在上面添加各種我們想要的控件.這次就講述如何獲點擊cell上的button從而獲取到后面的cell.

  • 方法一
    在創(chuàng)建cell的時候給button以tag值,tag值就是indexpath.row,用的時候直接用button.tag來取cell,但是此方法不適合多個section的tableview;

  • 方法二
    通過superView 在button的點擊事件中一直用superView來獲取button的父視圖,此種方法太low,并且容易出錯.

  • 方法三 主要說這個
    如果以上兩種不能滿足你(看到這,基本上是不能滿足了),那么這種方法一定適合你,先來看實現(xiàn)代碼

//首先為button添加點擊事件
    [button addTarget:self action:@selector(buttonAction:event) forControlEvents:(UIControlEventTouchUpInside)];
//這里要傳兩個參數(shù),后面解釋第二個參數(shù)
-(void)buttonAction:(UIButton*)sender event:(id)event
{    
    NSSet *touches =[event allTouches];   
    UITouch *touch =[touches anyObject];   
    CGPoint Position = [touch locationInView:self.tableview];   
    NSIndexPath *indexPath= [self.tableview indexPathForRowAtPoint:Position];    
    if (indexPath!= nil)    {
  //這個indexpath就是button后面cell的indexpath
    }
  }

先看給button添加點擊事件的方法,那里傳的參數(shù)是不能夠自定義,第一個都是button本身都知道,那么如果再傳兩個參數(shù)會是什么?
做了個測試,如下圖


測試.png

可以看到,我穿了三個參數(shù),在控制臺輸出的時候第一個是UIButton,第二個和第三個都是UITouchesEvent,也就是說第二個參數(shù)以后都是UITouchesEvent,這個touchesEvent可以說是個UITouch的集合,里面的數(shù)量取決于是幾個手指點擊的,我用兩個手指點擊,效果如下.

兩個手指點擊控制臺輸出
NSSet *touches =[event allTouches];
UITouch *touch =[touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self.tableview];

現(xiàn)在整體思路就很清晰了,通過第二個參數(shù),拿到觸摸事件,通過他來確定點擊的位置在tableView中的坐標(biāo)系,最后用indexPathForRowAtPoint這個方法來取到indexpath

還是最后一種有電水瓶.

轉(zhuǎn)載請注明作者,謝謝~
鑫 胖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容