2014-01-08 155 views
1

在我的UITableView上我使用的是自定義UITableViewCell s。這些單元格中的每一個都有一些標籤。當用戶選擇一個單元格時,我需要捕獲這些標籤的一個的內容,但我不知道該怎麼做。這是我的代碼。我用來試圖獲得這個標籤文本的行基本上是僞代碼,顯然不會編譯。有人可以告訴我我需要在這裏做什麼嗎?謝謝!從多標籤上的一個標籤獲取文本UITableViewCell

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ... 
    Groups *group = [self.fetchedObjects objectAtIndex:indexPath.row]; 
    cell.groupDescriptionLabel.text = group.group_descr; 
    cell.groupIDLabel.text = [group.group_id stringValue];  
    return cell; 
} 

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // capture the user selection 
    Groups *group = [self.fetchedObjects objectAtIndex:indexPath.row]; 
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSString *selection = selectedCell.groupDescriptionLabel.text; //<-- pseudo-code 

    NSLog(@"%@", group.group_descr); 

    ...  
} 
+0

您不應該在視圖中存儲數據。您已經從'cellForRowAtIndexPath'中的數據源獲取了字符串。只需在'didSelectRow'代碼中獲取字符串即可。 – Fogmeister

+1

@Fogmeister - 我喜歡這個建議。謝謝! – Alex

+0

已添加回答:D很高興幫助 – Fogmeister

回答

2

它通常是一個壞主意從視圖中獲取數據。你不應該使用任何視圖對象來存儲信息。

當您處於cellForRowAtIndexPath方法中時,您已經獲取了字符串。

您應該可以在didSelectRowAtIndexPath中執行相同的操作來獲取相同的字符串。

這樣你就不必從標籤中獲取文本。

謝謝

+0

這給了我需要的提示。謝謝。 –

1

如果你知道celForRowAtIndexPath將要返回您的自定義類型的細胞,而不是一個普通的UITableViewCell之一,把結果給您的自定義單元格類:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // capture the user selection 
    MyCellClass *selectedCell = (MyCellClass *) [tableView cellForRowAtIndexPath:indexPath]; 
    NSString *selection = selectedCell.groupDescriptionLabel.text; //<-- pseudo-code 
    NSLog(@"%@", selection); 
    //... 
} 
+0

感謝您的支持。我的方法有點破解,因爲我無法弄清楚如何從源頭獲取數據,但另一個建議爲我提供了一個更清晰的方法來實現這一點。我很欣賞這個建議。 +1直接回答我的問題。 – Alex

+1

雖然它回答了被問及的問題,但使用視圖元素來存儲信息通常不是一個好主意。 – Fogmeister

+0

@Fogmeister,好點。我應該注意到了。 User55410,您應該在輸入之後立即從您的單元收集用戶輸入並將其保存在模型中。嘗試從tableView:didSelectRowAtIndexPath中的單元格的字段中收集數據:不好。如果用戶將數據輸入到單元格中,然後將該單元格滾動到屏幕外,則數據將丟失。 –