编辑模式后UITableViewCell刷新问题

seb*_*ien 1 iphone uitableview ios

我已经实现了一个UITableViewCell被调用的子类UITableViewCellCustom.当进入编辑模式或当我滑动单元格以显示删除按钮时,我想隐藏我单元格中的标签并在退出编辑模式时显示它.

我在中实现了以下代码 UITableViewCellCustom

- (void)willTransitionToState:(UITableViewCellStateMask)state {
[super willTransitionToState:state];

if ((state == UITableViewCellStateShowingDeleteConfirmationMask) || (state == UITableViewCellStateShowingEditControlMask)) {

    [UIView animateWithDuration:0.5
                     animations:^{rankLabel.alpha = 0.0;}];

    }
}

- (void)didTransitionToState:(UITableViewCellStateMask)state {
    [super didTransitionToState:state];

    if (state == UITableViewCellStateDefaultMask) {
        [UIView animateWithDuration:0.5
                         animations:^{rankLabel.alpha = 1.0;}];
    }

}
Run Code Online (Sandbox Code Playgroud)

我有两个问题.

  1. 例如,如果我的tableview中有23行.当我显示前5行时,我进入编辑模式.我的rankLabel被隐藏,然后我滚动到我的桌子的底部(到第23行),我正在退出编辑模式.rankLabel再次显示但不是所有单元格,我的单元格6/12和18未正确刷新.任何的想法?

  2. 在方法willTransitionToStateanimateWithDuration用来轻柔地隐藏我的rankLabel但它不起作用,rankLabel被隐藏但没有过渡.didTransitionToState当我想再次显示标签时,同样的方法非常有效.任何的想法?

感谢您的支持.

Pat*_*her 5

对于#2:

- (void)willTransitionToState:(UITableViewCellStateMask)state {
[super willTransitionToState:state];

if ((state == UITableViewCellStateShowingDeleteConfirmationMask) || (state == UITableViewCellStateShowingEditControlMask)) {

    [UIView setAnimationsEnabled:TRUE];

    [UIView animateWithDuration:0.5
                     animations:^{rankLabel.alpha = 0.0;}];

}
Run Code Online (Sandbox Code Playgroud)