2012-08-17 83 views
2

這看起來很簡單,但我被卡住了。訪問cell.textLabel.text中的文本

在我的故事板中,我有一個包含文本標籤(使用靜態單元格)的單元格。在didSelectRowAtIndexPath中,我試圖訪問單元格的textLabel文本。這裏是我的代碼,以NSLogging:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
if (cell.textLabel.text) { 
     NSLog(@"cell.textLabel.text = %@",cell.textLabel.text); 
    } else { 
     NSLog(@"!cell.textLabel.text"); 
    } 
NSLog(@"just for fun: cell.textLabel.text = %@", cell.textLabel.text); 

if語句總是返回「cell.textLabel.text!」最後的NSLog總是(空)雖然故事板的細胞中有文字。

是cell.textLabel不正確?我應該看看UITableViewCell的另一個子視圖嗎?

+1

你確定單元格文本是在textLabel中,而不是detailTextLabel? – 2012-08-17 17:41:07

+0

我剛剛嘗試了detailTextLabel並獲得完全相同的結果。 – 2012-08-17 17:46:43

+0

沒有if語句會發生什麼,它會正確記錄嗎? – 2012-08-17 17:47:46

回答

1

故事板中表格單元格的默認單元格樣式爲「自定義」類型。這給你一個空白的單元格,你可以在其中添加其他類型的控件。

如果您將標籤拖到單元格並更改其文本,那麼您可能會使用自定義樣式的UITableViewCell。

屬性textLabel僅適用於自定義以外的其他類型的單元格,例如Basic或Detailed。

因此,您應該首先檢查這些樣式是否符合您的要求並使用它們。

如果您確實需要自定義類型的單元格,則需要創建UITableViewCell的子類並創建出口以訪問您的標籤。

+0

哇!按jove我想你明白了!男人,你會認爲這將在文檔的前面和中心位置。就像UITableViewClass參考資料的討論部分中的一行。如果我可能會問,您怎麼知道這一點? – 2012-08-17 20:47:02

+1

這是最可能的原因,因爲您的單元格存在並正在觸發didSelectRowAtIndexPath。因此,如果textLabel爲空,那麼textLabel確實不存在:) – 2012-08-19 02:25:57