我有一个显示数组值的 uitableview。我想知道是否有办法根据每个单元格被点击的次数来更新其表格单元格的字幕。
谢谢!
我有一个显示数组值的 uitableview。我想知道是否有办法根据每个单元格被点击的次数来更新其表格单元格的字幕。
谢谢!
首先,您需要使用 aNSMutableArray
以便在实例化后更改其内容。这是我刚刚尝试达到预期结果的基本概述:
在您的界面中
@property (strong, nonatomic) NSMutableArray *tapCountArray;
在您的实施中
- (void)viewDidLoad
{
[super viewDidLoad];
self.tapCountArray = [NSMutableArray new];
int numberOfRows = 20;
for (int i = 0; i < numberOfRows; i ++) {
[self.tapCountArray addObject:@(0)];
}
}
然后是重要的部分!
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.tapCountArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
NSString *text = [self.tapCountArray[indexPath.row] stringValue];
[cell.textLabel setText:text];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.tapCountArray replaceObjectAtIndex:indexPath.row withObject:@([self.tapCountArray[indexPath.row] intValue] + 1)];
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
当每个单元格被点击时,其中的数字detailTextLabel
将加一。
您不应该创建新的数组或集合,如果两个数组彼此不同步,这可能会导致问题。正如您在评论中建议的那样,这样做的方法是使用字典。但是,您所说的方式可能不是这样。您需要一个字典数组,其中一个键的值将是您的主要数据,而另一个键的值将是点击次数。例如,让我们调用两个键 main 和 sub,您的主要数据是一组名称。字典数组如下所示: ({main:@"Tom",sub:1}, {main:@"Dick", sub:0}, {main:@"Harry",sub:2}, . ....)。在 tableView:cellForRowAtIndexPath:indexPath 方法中,您可以像这样向单元格提供数据:
cell.textLabel.text = [[array objectAtIndex:indexPath.row] valueForKey:@"main"];
cell.detailTextLabel.text = [[array objectAtIndex:indexPath.row] valueForKey:@"sub"];
我认为您可以设置另一个与您现在拥有的长度相同的数组。然后当你didSelectRowAtIndexPath
被触发时,增加indexPath.row
新数组的条目并刷新该单元格。如果您不希望洗牌,则不需要字典。
您可以将对象插入到 NSCountedSet 中,在 cellForRowAtIndexPath 方法中,您将获取单元格的模型对象并验证它被插入到 NSCountedSet 实例中的次数。
看看 NSCountedSet 文档:https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSCountedSet_Class/Reference/Reference.html