在 didSelectRowAtIndexPath 上更改 iPhone 表格视图单元格标签文本

Posted

技术标签:

【中文标题】在 didSelectRowAtIndexPath 上更改 iPhone 表格视图单元格标签文本【英文标题】:change iPhone tableview cell label text on didSelectRowAtIndexPath 【发布时间】:2012-06-26 12:56:27 【问题描述】:

我想更改 didSelectRowAtIndexPath 上自定义 UITableviewCell 文本的文本,我正在使用以下代码:-

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.lblName.text=@"cambridge";
[tableView deselectRowAtIndexPath:indexPath animated:NO];

 

但我收到“在非结构或联合的情况下对成员 'levelNo' 的请求”。但是我可以将它设置为 cellForRowAtIndexPath。 请帮忙

【问题讨论】:

【参考方案1】:

试试

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
 YourCustomCell *cell = (YourCustomCell*)[tableView cellForRowAtIndexPath:indexPath];
 cell.lblName.text=@"cambridge";
 [tableView deselectRowAtIndexPath:indexPath animated:NO];

 //update your data, your data source must be mutable
 //in case your array content are NSString, just do
  [yourMutableArrayDataSource replaceObjectAtIndex:indexPath.row withObject:@"cambridge"];

 //or if your data array holds NSDictionary. you can just initialize new dictionary 
 //as a replacement of the object in case you dont want your dictionary to be mutable
 NSDictionary *tempDict = [NSDictionary dictionaryWithObjectsAndKeys:@"cambridge",@"text",@"yourOtherData",@"otherData" nil];
  [yourMutableArrayDataSource replaceObjectAtIndex:indexPath.row withObject:tempDict];

 

正如 Maulik 所述(谢谢),当单元格滚动时,lblName 文本将变回其原始文本。您可能想要更新数据源以保留新数据。 **答案已编辑

【讨论】:

【参考方案2】:
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath    

  UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
 cell.lblName.text=@"New text Here";
 [tableView deselectRowAtIndexPath:indexPath animated:NO];
 [tableView reloadData];

【讨论】:

【参考方案3】:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

 YourCustomCell *cell = (YourCustomCell*)[tableView cellForRowAtIndexPath:indexPath];
 cell.lblName.text=@"cambridge";
 [tableView deselectRowAtIndexPath:indexPath animated:NO];

通过上述janusfidel的代码,标签的文字会发生变化。但是当你滚动表格时,我猜值会变成原来的值。

当您想要更改原始数据时,您还需要更新您的数据源(即您的数组)。

【讨论】:

以上是关于在 didSelectRowAtIndexPath 上更改 iPhone 表格视图单元格标签文本的主要内容,如果未能解决你的问题,请参考以下文章

tableView - didSelectRowAtIndexPath 未调用

在 didSelectRowAtIndexPath 中呈现缓慢的 ViewController

我可以麻烦UITableViewDelegate的didSelectRowAtIndexPath:吗?

在 didselectRowAtIndexPath 之后 UITableView 无法滚动底部

在 tableView 上使用 CustomCell,如何调用 didSelectRowAtIndexPath?

didSelectRowAtIndexPath 不会在 ViewController 中触发