Ios 如何以编程方式设置重新加载数据源后保留在UITableViewCell中的属性
我有一个Ios 如何以编程方式设置重新加载数据源后保留在UITableViewCell中的属性,ios,objective-c,animation,uitableview,Ios,Objective C,Animation,Uitableview,我有一个UITableView,布局如下 TableView -> CustomCell --> CustomLabel 我的自定义标签有一些绘图代码,如果属性@property(非原子)bool已设置动画是是,它将绘制动画内容,如果是否,它将绘制没有动画的内容 默认情况下,bool-animated为NO 因此,当表格视图初始加载其数据并重新绘制单元格时,内容是在没有动画的情况下绘制的 现在这就是我脱臼的地方 我所追求的效果是,当用户单击单元格时,单元格的数据将更新,内容将重
UITableView
,布局如下
TableView
-> CustomCell
--> CustomLabel
我的自定义标签有一些绘图代码,如果属性@property(非原子)bool已设置动画代码>是是
,它将绘制动画内容,如果是否
,它将绘制没有动画的内容
默认情况下,bool-animated
为NO
因此,当表格视图初始加载其数据并重新绘制单元格时,内容是在没有动画的情况下绘制的
现在这就是我脱臼的地方
我所追求的效果是,当用户单击单元格时,单元格的数据将更新,内容将重新绘制动画
我就这样触发这个,
[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
因此,我的问题是,如何调用我的“绘制我的自定义单元格”,以便在表格加载单元格时它不会设置动画,而是在用户更改单元格值时设置动画。此代码不足以分析问题
据我所知,你可以试试这个
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// Do your work "[sender setTitle:newValue forState:UIControlStateNormal];"
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:pathOfTheCell, nil] withRowAnimation:UITableViewRowAnimationNone];
}
注意:需要更多代码才能获得正确答案您可以从单元格中获取行索引单元格,然后尝试对该单元格进行操作
CustomCell * cell = [self.tableView cellForRowIndex:index]; //this will reference that cell
cell.noteTitle.animated = yes;
[self.tableView reloadData];
cell = nil;
当我重写这个问题时,我偶然发现了答案
在didselectrowatinexpath
中,我存储当前选定的路径,然后在
cellforrowatinexpath
检查当前正在绘制的单元格是否在选定的单元格中,然后相应地设置动画属性
if ([indexPath isEqual:self.currentSelectedIndexPath]){
cell.noteTitle.animated = YES;
}else{
cell.noteTitle.animated = NO;
}
感谢大家的帮助,我意识到我应该在原始问题中包含更多代码您需要显示更多代码。我想特别是CellForRowatineXpath是必需的。很可能我们必须查看您的自定义单元格和标签的代码。