UItableViewCell滑动删除时,调整cell的位置大小是否显示等。
CustomTableViewCell为UITableViewCell的子类,在实现文件中重写willTransitionToState方法。
willTransitionToState是在cell改变显示状态的时候调用,有三种状态:
typedef NS_OPTIONS(NSUInteger, UITableViewCellStateMask) {
UITableViewCellStateDefaultMask = 0, //普通状态
UITableViewCellStateShowingEditControlMask = 1 << 0, //编辑状态
UITableViewCellStateShowingDeleteConfirmationMask = 1 << 1 //删除状态
};
具体实现方法:

- (void) willTransitionToState:(UITableViewCellStateMask)state{
    [super willTransitionToState:state];
    //UITableViewCellStateShowingDeleteConfirmationMask
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
        for (UIView *subview in self.subviews) {
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                //this is delete button
            }
            
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellContentView"]) {
                //this is contentView
                for (UIView *sub in subview.subviews) {
                    if ([NSStringFromClass([sub class]) isEqualToString:@"UILabel"]) {
                        UILabel *subLabel = (UILabel *)sub;
                        if (subLabel.tag == 8) {
                            subLabel.hidden = YES;
                        }
                    }
                    if ([NSStringFromClass([sub class]) isEqualToString:@"UIImageView"]) {
                        UILabel *subImageView = (UILabel *)sub;
                        if (subImageView.tag == 11) {
                            subImageView.hidden = YES;
                        }
                    }
                }
            }
        }
    }
    //UITableViewCellStateDefaultMask
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateDefaultMask){
        for (UIView *subview in self.subviews) {
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                //this is delete button
            }
            
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellContentView"]) {
                //this is contentView
                for (UIView *sub in subview.subviews) {
                    if ([NSStringFromClass([sub class]) isEqualToString:@"UILabel"]) {
                        UILabel *subLabel = (UILabel *)sub;
                        if (subLabel.tag == 8) {
                            subLabel.hidden = NO;
                        }
                    }
                    if ([NSStringFromClass([sub class]) isEqualToString:@"UIImageView"]) {
                        UILabel *subImageView = (UILabel *)sub;
                        if (subImageView.tag == 11) {
                            subImageView.hidden = NO;
                        }
                    }
                }
            }
        }
    }
}

  

posted on 2013-06-17 14:28  nanoCramer  阅读(969)  评论(0编辑  收藏  举报