2012-03-02 109 views
4

我想設置一個表格視圖單元格已被分組,作爲一個按鈕,但我似乎無法找到在XCode 4.2或編程方式在界面生成器中的位置。表視圖單元格作爲按鈕

我試過將表格視圖單元連接到IBAction,但它只允許我創建或鏈接到IBOutlet。

作爲一個臨時修復,我在單元格中嵌入了一個矩形按鈕,但按下時不會突出顯示藍色。

我見過幾個應用程序這項工作,一個例子是在下面的Safari瀏覽器的應用程序清除歷史記錄,並清除Cookies和數據按鈕:

enter image description here

回答

10

試想一下,你的IBAction爲是這樣的:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    //check if your cell is pressed 
    BOOL myCellIsPressed = ... 

    if(myCellIsPressed) 
     [self buttonPressed]; 
} 

要檢查是否已按下你的,你有幾種方式,爲:

-(IBAction)buttonPressed{ 
//Do my stuff 
} 

然後,你應該在你的委託做到這一點例如,如果您知道表格中的按鈕行:

int myCellRow = 5; 
if (myCellRow == IndexPath.row) //YES! 

或者您可以在您的單元格中放置標記然後檢查是否是一個:

#define myTag 5 

在創建單元:

UITableViewCell *myCell = ... 
myCell.tag = myTag 

而且在didSelectRowAtIndexPath方法:

UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; 
if (selectedCell.tag == myTag) //YES! 
+0

一個很簡單的問題,但如何在didSelectRowAtIndexPath方法知道哪個小區或行被實際按下?我得到的BOOL是檢查它是否被按下,但它怎麼知道哪一個? – jcrowson 2012-03-02 10:24:52

+1

讓我編輯我的答案 – 2012-03-02 10:30:27

+0

絕對的輝煌迴應,非常感謝tonio。最後一個問題要清楚:IndexPath.row代表用戶按下了什麼?所以當你說myCellRow == IndexPath.row時,是在說被按下的單元格叫做myCellRow,然後做些什麼? – jcrowson 2012-03-02 10:47:46

1

這些都不按鈕.. 的清晰餅乾和其他東西的函數在 表視圖委託方法進行處理

tableview : didselectRow 

在此可以找到選擇了哪個部分,並且行和執行功能BAS編輯。

相關問題