是否可以动画更改UITableViewCell附件

时间:2012-10-03 02:59:24

标签: uitableview uiviewanimation

非常简单的情况,多行,只有一行应该一次有复选标记。用户选择行X,行X获得复选标记,从先前选择的行中删除复选标记。但是如何动画变化呢? (淡出淡出)。

我想也许这会奏效:

[UIView animateWithDuration:1.0 animations:^{

    cell.accessoryType = UITableViewCellAccessoryNone;
    cell.accessoryType = UITableViewCellAccessoryCheckmark;

    previous.accessoryType = UITableViewCellAccessoryCheckmark;        
    previous.accessoryType = UITableViewCellAccessoryNone;        

}];

以及

[tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationFade];

第一个没有做任何事情,第二个删除了路径数组中NSIndexPath引用的两个单元格。我还尝试在[tableView beginUpdates / endUpdates]中包装reloadRowsAtIndexPaths。

更新

在传入的indexPath上调用reloadRowsAtIndexPath(下面的简单实现)正在做同样的事情,行“变为空白”。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

该表是静态表,我为每个单元格声明并合成了属性,cellForRowAtIndexPath返回每行的相应单元格...

.h
@property (strong, nonatomic) IBOutlet UITableViewCell *cellNever;
@property (strong, nonatomic) IBOutlet UITableViewCell *cell030;
@property (strong, nonatomic) IBOutlet UITableViewCell *cell100;

.m
@synthesize cellNever;
@synthesize cell030;
@synthesize cell100;
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return [cells objectAtIndex:indexPath.row];
}

- (void) viewDidLoad {
    cells = [NSArray arrayWithObjects:cellNever, cell030, cell100, cell130, cell200, cell230, cell300, cell400, cell500, nil];
}

非常感谢。

0 个答案:

没有答案