2011-10-07 90 views
1

我已經實現了UITableViewCell的一個子類,名爲UITableViewCellCustom。當進入編輯模式或當我滑動單元格以顯示刪除按鈕時,我想隱藏單元格中的標籤,並在退出編輯模式時顯示它。編輯模式後UITableViewCell刷新問題

我在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;}]; 
    } 

} 

執行下面的代碼,我有兩個問題。

  1. 例如,如果我有我的tableview 23行。當我的前5行顯示時,我進入編輯模式。我的rankLabel是隱藏的,然後我滾動到我的桌子底部(到第23行),我退出編輯模式。 rankLabel會再次顯示,但不會顯示所有單元格,我的單元格6/12和18未正確刷新。任何想法?

  2. 在方法willTransitionToState我使用animateWithDuration輕輕隱藏我的rankLabel,但它不起作用,rankLabel隱藏但沒有過渡。當我想再次顯示標籤時,同樣的方法在didTransitionToState中效果很好。任何想法?

感謝您的支持。

回答

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;}]; 

}