我正在尝试使用表格视图(动态)创建一个简单列表,其中表视图单元格加载了来自简单数组的数据。
当用户在表格视图中点击一行时,我正在尝试更新表视图单元格上的标签。
问题:出于某种原因,我可以更新所选单元格上的标签,但单元格变为灰色,我无法使用以下方式取消选择:
[tableView deselectRowAtIndexPath:indexPath animated:NO];
但如果我不更新表视图单元格标签,则DeSelect可以正常工作!
反之亦然,如果删除DeSelect行语句,则标签更新有效!
我不能让他们同时工作:(
这是我用来更新标签的代码: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"ListCell";
ListCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.TitleLabel.text = @"testing";
有人有什么想法吗?
答案 0 :(得分:2)
没有必要在didSelectRowAtIndexPath方法中使用dequeueReusableCellIdentifier创建一个新单元格,这就是为什么文本没有更新的原因。以下代码可以解决您的问题。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
ListCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.TitleLabel.text = @"testing";
}
答案 1 :(得分:0)
首先,要获取所选单元格,请使用cellForRowAtIndexPath方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.TitleLabel.text = @"testing";
}
其次,要禁用单元格的选择样式,请在cellForRowAtIndexPath方法中将单元格的selectionStyle设置为UITableViewCellSelectionStyleNone