设置在 uitableview 单元格中添加的 uilabel 的文本

Posted

技术标签:

【中文标题】设置在 uitableview 单元格中添加的 uilabel 的文本【英文标题】:set uilabel's text that added in uitableview cell 【发布时间】:2014-07-06 16:55:50 【问题描述】:

在每个uitableview单元格中,有一个按钮,一个uilabel,如以下代码

ListCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
    cell = [[ListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];



[cell.UIButton addTarget:self action:@selector(ButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
cell.UIButton.tag = indexPath.row;
cell.UILabel.text = @"0";

我想要这个,当我点击按钮时,与uibutton在同一单元格的uilabel.text会添加一个,我再次点击,uilabel.text会添加一个,就像投票一样。

- (IBAction)ButtonClicked:(UIButton *)sender

  NSInteger selectedRow = sender.tag;

那么如何更改 uilabel 的文本?谢谢。

【问题讨论】:

请阅读developer.apple.com/library/mac/documentation/Cocoa/Conceptual/…并相应地重命名您的变量和方法,以便我们更轻松地帮助您解决问题。 @duci9y 感谢您的建议。 【参考方案1】:
    为什么要将字符串@"0" 硬编码为标签文本?如果您的目标是跟踪投票,则需要在某些数据结构中跟踪当前投票计数。然后根据数据的实际值设置每个单元格。然后可以在点击按钮时更新此数据。 如果可以添加、删除或移动行,将按钮的标签设置为indexPath.row 会导致很多问题。有一种更好的方法可以从按钮中获取单元格,而无需使用标签。

以下假设您的班级中有一个 NSMutableArray ivar (_votes) 作为投票计数的数据源。

现在您的cellForRowAtIndexPath 变为:

ListCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) 
    cell = [[ListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    [cell.UIButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];


NSNumber *votes = _votes[indexPath.row];    
cell.UILabel.text = [NSString stringWithFormat:@"%@", votes];

您的按钮操作变为:

- (void)buttonClicked:(UIButton *)button 
    CGPoint pointInTable = [button convertPoint:CGPointMake(5, 5) toView:self.tableView];
    NSIndexPath *path = [self.table indexPathForRowAtPoint:pointInTable];

    NSNumber *oldVote = _votes[path.row];
    NSNumber *newVote = @([oldVote intValue] + 1);
    _votes[path.row] = newVote;

    [self.tableView reloadRowsAtIndexPaths:@[ path ] withRowAnimation: UITableViewRowAnimationFade];

【讨论】:

谢谢,我更新了代码,解决了这个问题。

以上是关于设置在 uitableview 单元格中添加的 uilabel 的文本的主要内容,如果未能解决你的问题,请参考以下文章

仅在某些单元格中添加SubView

iPhone dev - 在 UITableView 的单元格中添加文本时遇到问题

如何在 UITableView 单元格中添加标签和图像视图的数量

如何在 UITableview 单元格中添加左侧完全滑动和功能 - 目标 c

如何在 Xcode swift 的 UITableview 单元格中显示当前股票价格?

在 TableView 的自定义单元格中添加单选按钮并且无法访问外部