0

我有UITableView以下布局

TableView
 -> CustomCell
 --> CustomLabel

我的自定义标签有一些绘图代码,如果属性@property (nonatomic) bool animated;YES,它将绘制动画内容,如果是NO,将绘制它的内容而不动画。

默认情况下bool animatedNO.

因此,当表格视图最初加载它的数据并重新绘制单元格时,内容是在没有动画的情况下绘制的。

现在,这就是我变得松懈的地方。

我追求的效果是,当用户单击单元格时,单元格的数据会更新并且内容会以动画方式重绘。

我这样触发,

[sender setTitle:newValue forState:UIControlStateNormal];
cell.noteTitle.animated = YES;
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:pathOfTheCell, nil] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

问题是,当我设置时,

cell.noteTitle.animated = YES;

当我打电话时

cell.noteTitle.animated = YES;

它似乎创建了一个新实例CustomCell,正如我上面所描述的,有animated = NO.

所以我的问题是,我如何调用我的自定义单元格,以便它不会在表格加载单元格时设置动画,但在用户更改单元格值时会设置动画。

4

3 回答 3

0

this code is not enough to analyze the problem.

as per what I get you can try this

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    // Do your work "[sender setTitle:newValue forState:UIControlStateNormal];" 
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:pathOfTheCell, nil] withRowAnimation:UITableViewRowAnimationNone];
}

Note : need more code for correct answer

于 2013-01-10T09:31:31.593 回答
0

当我重写这个问题时,我偶然发现了答案。

didSelectRowAtIndexPath我存储当前选择的路径,然后在

cellForRowAtIndexPath检查当前单元格是否在选定的单元格中绘制,然后相应地设置动画属性

if ([indexPath isEqual:self.currentSelectedIndexPath]){
    cell.noteTitle.animated = YES;
}else{
     cell.noteTitle.animated = NO;
}

感谢各位的帮助,我意识到我应该在原始问题中包含更多代码

于 2013-01-10T09:50:06.237 回答
0

您可以从单元格中获取单元格以获取行索引,然后尝试对该单元格进行操作。

CustomCell * cell = [self.tableView cellForRowIndex:index]; //this will reference that cell
cell.noteTitle.animated = yes;
[self.tableView reloadData];
cell = nil;
于 2013-01-10T09:42:27.490 回答