2013-05-15 78 views
3

所以我想在我的tableView單元格中使用三個按鈕。我做了一個自定義單元格,所以我自定義按鈕,自定義單元格一次,而在cellForRowAtIndexPath在表格中添加按鈕查看單元格

一次又一次地這樣做,但我想選擇添加到所有三個按鈕,我使用

針對
[cell.btn1 addTarget:self action:@selector(firstAction:) forControlEvents:UIControlEventTouchUpInside]; 

裏面cellForRowAtIndexPath。這是最好的方式去了嗎?不會addTarget每次我滾動我的單元格時初始化和重新初始化本身?這不會是一個額外的超載?有沒有更好的方式做到這一點,我不知道?

編輯

我這是怎麼計算出的按鈕屬於哪個小區被按下

CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.feedTableView]; 
NSIndexPath *indexPath = [self.feedTableView indexPathForRowAtPoint:buttonPosition]; 

回答

1

你可以通過你的故事板或XIB文件中設置你的按鈕的目標和行動。更有趣的問題將是你找出哪個表格單元格按鈕被按下。

我建議繼承的UIButton並增加了「row」或「indexPath」屬性,你的子類UIButton的,你在你的桌子餵養「cellForRowAtIndexPath」的方法設置,並從其中(「sender」),你可以提取哪一行一旦按下按鈕並且您的操作被調用,按鈕就會被點擊。

+0

Michael Dautermann,請看看我的編輯。當我使用故事板爲他們分配動作時,當前的邏輯劑量工作。 – Jonathan

+0

您目前的邏輯無法正常工作? indexPath是假的還是? –

+0

好吧,它的工作原理是如果我在cellForRowAtIndexPath中做選擇器的事情,但是當我使用故事板將動作直接連接到按鈕,然後按下按鈕時,什麼都不會發生。 – Jonathan

0

您應該在您的自定義單元格中創建一個委託,並在單擊任何按鈕時觸發此委託。一些代碼示例:

@protocol CustomCellDelegate 
-(void)cell:(UITableViewCell *)cell buttonTapped:(UIButton) atIndexPath:(NSIndexPath *)indexPath; 
@end 

@interface CustomCell 
property (weak) id<CustomCellDelegate> delegate; 
@end 

@implementation CustomCell 
-(void)buttonTapped { 
    // fire delegate here 
} 
@end 

我還強烈建議您籤自由明智的TableView框架,因爲它使操作與按鈕這樣的規矩細胞容易得多。在過去的幾個月中,我已經節省了大量的時間。

相關問題