2013-06-12 62 views
0

前面:我是noob。第二次無法設置UITablevIewCell textLabel文本

我有一個方法,設置文本在UITableViewCell中的textLabel對象。相關的代碼片段是:

NSLog(@"BEFORE .textLabel.text: %@", _addWarmupActivityTableViewCell.textLabel.text); 
NSLog(@"BEFORE activity.name: %@", theSelectedActivityToDisplayAndSave.name); 
_addWarmupActivityTableViewCell.textLabel.text = theSelectedActivityToDisplayAndSave.name; 
NSLog(@"AFTER .textLabel.text: %@", _addWarmupActivityTableViewCell.textLabel.text); 

第一次設置它,它的工作原理。您可以通過此日誌記錄看到:

[12231:c07] BEFORE .textLabel.text: (null) 
[12231:c07] BEFORE activity.name: Animal Movements 
[12231:c07] AFTER .textLabel.text: Animal Movements 

然後,隨後的任意時間它被稱爲後,它返回一個空如通過以下記錄:

[12231:c07] BEFORE .textLabel.text: (null) 
[12231:c07] BEFORE activity.name: Animal Movements 
[12231:c07] AFTER .textLabel.text: (null) 

我必須承認,我有點難倒。我已經閱讀過其他文章(可能是)textLabel被修改後,它實際上會創建一個新的UILabel對象。然而,對於我來說,在我嘗試設置它之後,仍不能解釋爲什麼它是(空)一行?

任何指針在正確的方向將不勝感激。

乾杯。

+0

這很令人困惑 – Divyu

+0

您是否嘗試過設置斷點來查看_addWarmupActivityTableViewCell和_addWarmupActivityTableViewCell.textLabel看起來是否理智? – Bemmu

+0

確保您沒有在分配單元的塊內設置標籤 - 如果使用可重用的單元系統,只會調用一次。 –

回答

0

您沒有在代碼中顯示/分配單元格的位置,所以很難說 - 我假設您將它分配在您列出的某個位置之前。

你將有這樣的事情:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 
    if (!cell) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:@"cell"]; 
    } 
    cell.textLabel.text = theSelectedActivityToDisplayAndSave.name; // wherever you get this from 
    return cell; 
} 

這是否類似於你使用的方法是什麼?

我想我會看到的是細胞是否正確分配。

+0

我應該提到它是一個靜態表。就我的理解而言,cellForRowAtIndexPath不適用於靜態表。我錯了嗎? – brizrobbo

+0

謝謝。這使我朝着正確的方向前進。以我的經驗不足,我做出了一些不一定正確的假設。無論如何,我重新調整了類的數據源組件並實現了cellForRowAtIndexPath。它現在正在按照要求工作。 – brizrobbo