切换UITableViewCell selectionStyle会导致单元格上的标签消失

时间:2013-07-21 04:12:15

标签: ios uitableview

我有一个UITableViewCell的自定义子类。在我的故事板上,它基本上有一个containerView(UIView *),上面有一些标签,还有一个UISwitch。我添加了一个手势,向右滑动tableViewCell,在containerView下面显示一些细节控件,然后再用另一个手势将原始视图滑回。动画代码如下所示:

- (void)showCustomControls:(UISwipeGestureRecognizer *)gesture {
    [UIView animateWithDuration:0.3 animations:^{
        [self.containerView setFrame:CGRectMake(self.frame.size.width - kTableViewCellSwipedWidth, 0, self.frame.size.width - kTableViewCellSwipedWidth, kOverviewTableViewCellHeight)];
    }completion:^(BOOL finished) {
        self.isReveal = YES;
        self.selectionStyle = UITableViewCellEditingStyleNone;
    }];
}

- (void)hideCustomControls:(UISwipeGestureRecognizer *)gesture {
    [UIView animateWithDuration:0.3 animations:^{
        [self.containerView setFrame:CGRectMake(-kTableViewCellBounceWidth, 0, self.frame.size.width, kOverviewTableViewCellHeight)];
    }completion:^(BOOL finished) {
        [UIView animateWithDuration:0.1 animations:^{
            [self.containerView setFrame:CGRectMake(-kTableViewCellBounceWidth / 2, 0, self.frame.size.width, kOverviewTableViewCellHeight)];
        }completion:^(BOOL finished) {
            [self.containerView setFrame:CGRectMake(0, 0, self.frame.size.width, kOverviewTableViewCellHeight)];
        }];

        self.isReveal = NO;
        self.selectionStyle = UITableViewCellSelectionStyleBlue;
    }];
}

我注意到如果我打开selectionStyle,打开行,看起来很有趣。所以我想关闭选择方式。因此,当行打开或关闭时,其中的代码将打开和关闭选择样式。它有用,但奇怪的是,当调用hideCustomControls并且我的原始行滑回原位时,容器视图上的标签全部消失。我显示原始行的一小部分边缘,当显示时,标签就在那里。但是第二行是一直滑动的,所有标签都消失了。同样在containerView上的UISwitch从来没有遇到过问题。它始终存在。是否有可能发生这种情况?当我在两种方法中删除selectionStyle代码时,这个问题就消失了。提前谢谢。

编辑: 我使用NSLayoutConstraint输入正确的代码进行动画处理。现在问题是当我的行滑回到位时,我在下面的视图上显示的UIView子类显示到顶视图。不知道为什么会发生这种情况......

0 个答案:

没有答案