2009-10-20 48 views
1

在我的應用程序中,我有一個表格顯示每行中的單元格。 在界面生成器中,我將一個按鈕拖到單元格上,將其設置爲黑暗信息按鈕,並將其連接到IBAction。 這工作正常。 只有,我希望按鈕的行爲有所不同,具體取決於按鈕單元格所在的表的行。 我將如何獲得該行索引?如何查找UIButton的行索引是TableCell? (iPhone)

我意識到,我可能會顯示缺少的對象層次的基本認識,但我希望你們能原諒我

感謝 Sjakelien

回答

0

在你的tableView委託和數據源的方法(檢查文檔!)你有幾種方法,最好的一個,這是

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

放棄這一方法在實施和這樣說

switch (indexPath.row) { 
     case 0: 
//set variable or do method based on row 0 (first row) 
      break; 
     case 1: 
//set variable or do method based on row 1 (second row) 
      break; 
     case 2: 
//set variable or do method based on row 2 (third row) 
      break; 
    }//and so on 
} 
+1

這發生在小區被選擇,而不是在小區內的按鈕被按下內這個屬性。 OP表示他已經創建並連接了一個IBAction,它是與任何表視圖委託/數據源方法不同的方法。 – Tim 2009-10-20 15:30:59

+0

是的,你說得對。也許像選中時獲取單元格,然後查看該視圖的子視圖搜索按鈕。 – JoePasq 2009-10-20 16:58:09

1

如果首先沒有設置一些數據,這絕對不容易。如果可以,請使用NSDictionary,其中按鈕是鍵,值是索引路徑,每當您從-tableView:cellForRowAtIndexPath:返回一個單元時,都會更新它。類似這樣的:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... 
    [indexDict setValue:indexPath forKey:theButton]; 
    return cell; 
} 



- (void) buttonPressed:(UIButton *)button { 
    NSIndexPath *indexPath = [indexDict valueForKey:button]; 
    ... 
} 
1

您可以維護標籤。當你拖放按鈕時,檢查界面的構建,你會看到這些按鈕的「標籤」屬性。爲每個按鈕分配不同的值(我假設您爲不同的行有不同的按鈕,如果您對不同的行具有相同的單元標識符,則此解決方案將不起作用)。並且當您收到標記值的事件檢查時。 我的工作和我的工作有類似的問題,我爲每個創建的按鈕標籤維護NSArray。

0

另一種方法是在您的視圖中更改您的UIButton的基類,然後使用這個其他類,這基本上擴展了UIButton,添加了NSInteger行@property(請記住@synthesize它)。

你會那麼電池安裝過程中設置此屬性,您可以檢索信息的方法