2009-12-03 76 views
8

我想在選中它時更改單元格的textLabel和detailTextLabel。 我試過以下,但沒有發生變化:如何在選擇UITableViewCell時更改textLabel?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    MyAppDelegate *appDelegate = (MyPhoneAppDelegate*)[[UIApplication sharedApplication] delegate]; 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    cell.detailTextLabel.text = @"xxxxx"; 
    cell.textLabel.text =  @"zzzzz"; 
    [tableView reloadData]; 
} 

回答

-1

你嘗試重新加載整個表只刷新選定單元格呢?的

[cell setNeedsDisplay];

代替

[tableView reloadData];

這將有更好的表現,我不是,但我想,如果你刷新整個表選擇丟失(這可能是原因你在最後看不到任何變化)......

+0

如果您使用自定義單元格視圖,該怎麼辦? – meridimus 2010-06-23 20:31:52

+0

自定義單元格視圖是一個設置到UITableViewCell的contentView的視圖,所以這是相同的,setNeedsDisplay將重繪contentView。 – yonel 2010-11-12 20:06:47

2

你不應該在選中單元格的時候重新加載表格。相反,嘗試

[細胞setNeedsLayout]

您對標籤的上述變化後。

此外,是否有一個原因,你在該方法中的應用程序委託引用?

+0

這對我來說非常合適。謝謝! – Nick 2013-04-04 23:17:45

10

我同意,重新加載表視圖實際上將使用tableView:cellForRowAtIndexPath:轉儲並重新加載/顯示所有單元格,並使用原始數據,而不是您的tableView:didSelectRowAtIndexPath:方法中更新後的@「xxxxx」和@「yyyyy」。

在一個小的測試項目,我能夠在選擇用更改標籤:

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

    UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath]; 
    cell.textLabel.text = @"it was tapped"; 
} 
0

創建一個新的iPad項目(拆分視圖),現在經過類 - >文件。最簡單的方法就是在那裏。 XCode的生成代碼。

示例代碼行: -

cell.textLabel.text = [NSString stringWithFormat:@"Row %d", indexPath.row]; 

你可以用它們在cellForRowAtIndexPath ||&& didSelectRowAtIndexPath ..

2

嘗試重新加載您選擇(通過indexPath描述)的細胞:

[yourTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone]; 
0

不知道你'試圖處理委託,但你應該嘗試調用已經實例化的tableView;即致電

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath: indexPath]; 

也許我不清楚 我想說的是,你實例化一個新的空表視圖

UITableViewCell *cell = [**tableView** cellForRowAtIndexPath: indexPath]; //cell has nothing it is new. 

考慮更換打電話給老

UITableViewCell *cell = [**self.tableView** cellForRowAtIndexPath: indexPath]; //now you have one that has a textField already in it 
+0

你看到我在說什麼了嗎?你正在創建一個不是舊的實例。 – 2014-11-21 23:00:29

+0

如果您創建一個新的,您必須重新加載數據才能在表格視圖中看到它。如果您使用舊的視圖將反映更改。 – 2014-11-21 23:05:56

相關問題