2011-11-27 101 views
0

如何引用在didSelectRowAtIndexPath內單擊的單元格對象:(NSIndexPath *)indexPath方法?UITableViewController didSelectRowAtIndexPath:(NSIndexPath *)indexPath

我有一個UISplitViewController,在MasterView中我有一個表,其中cell.tag = sqlite數據庫的主鍵(即從db填充表)。我能夠捕獲上述方法中的點擊事件,但我看不到我如何傳遞單元格對象,或者我可以如何引用它以獲取cell.tag。最終,目標是通過主/細節委託將該ID傳遞給詳細視圖,然後根據來自主人的ID將數據加載到DetailView中。

任何提示,感激!

編輯:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Configure the cell. 
    cell.textLabel.text = NSLocalizedString(@"Detail", @"Detail"); 
    Entry *entry = [self.entries objectAtIndex:[indexPath row]]; 
    [[cell textLabel] setText:[NSString stringWithFormat:@"%@",entry.title]]; 
    cell.tag = entry.entryID; 
    return cell; 
} 

回答

4

因爲您已經擁有一組條目,您還可以按如下方式書寫。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    Entry *entry = [self.entries objectAtIndex:[indexPath row]]; 
} 

我覺得這是比的cellForRowAtIndexPath首選方式:因爲

  • 你可以得到整個條目對象,不僅ID。
  • 你可以使用非整數ID像字符串。
  • 你不依賴於表或單元格(解耦)。
+0

是的,這更好。我認爲我必須通過我再次查詢數據庫,但如果我可以通過整個入口對象,這是最好的情況。謝謝! – David

2

您可以使用該方法cellForRowAtIndexPath從NSIndexPath得到的UITableViewCell。

+0

這實際上是我填充我感興趣的單元格屬性。請參閱上面的編輯。你是說我可以從didSelectRowAtIndexPath方法中調用該方法嗎? – David

0

您可以通過它保存所有ID中的NSMutableArray,然後用這種方法在其他類傳遞..

classInstanceName.IntVariableName=[[taskIdArray objectAtIndex:indexPath.row]intValue]

4

didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
} 

注意如何詢問表cellForRowAtIndexPath:返回一個單元格,而要求控制器tableView:cellForRowAtIndexPath:運行委託方法。

+0

這是我需要的。謝謝! – David

相關問題