4

我做了一个自定义tableviewcell并覆盖了该方法
-(void) setEditing:(BOOL)editing animated:(BOOL)animated
以便为UISwitch编辑模式隐藏一个。

这是我的代码

-(void) setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];

    if (animated==YES) {
        // With animation
        if (editing == NO) {
            // Editing stopped
            [UIView animateWithDuration:0.3
                             animations:^{
                                  [self.alarmSwitch setAlpha:1.0];
                             }];
            [self.alarmSwitch setEnabled:YES];
        } else {
            // Editing started
             [UIView animateWithDuration:0.3 
                             animations:^{
                                  [self.alarmSwitch setAlpha:0.0];
                             }];
            [self.alarmSwitch setEnabled:NO];
        }
    } else {
        // Without animation
        // .................
    }
}

在 ios 5.0 这工作。从 ios 5.1 及更高版本开始,它不再显示 alarmSwitch。这是一些屏幕截图。

1)编辑模式

在此处输入图像描述

2)编辑后 (IOS 5.0)

在此处输入图像描述

3)编辑后(IOS 5.1 及更高版本)

在此处输入图像描述

如果我向上滚动然后向下滚动(以便重新绘制单元格),则会再次显示该开关。有谁知道为什么会发生这种情况?奇怪的是,在 iOS 5.0 中,它就像一个魅力,而现在它不起作用。

4

2 回答 2

1

问题似乎是

[self.alarmSwitch setEnabled:NO];

和 setAlpha 动画。

解决问题的最简单方法是在 setAlpha 之前调用动画块内的 setEnabled 行,如下所示:

[UIView animateWithDuration:0.3
                         animations:^{
                             [self.alarmSwitch setEnabled:NO];
                             [self.alarmSwitch setAlpha:0.0];
                         }];

顺便说一句,你为什么还要将 enabled 属性设置为 NO?将 alpha 属性设置为 0 就足够了。

于 2012-10-15T12:19:16.250 回答
0

你在哪里调用 tableView 的 setEditing 方法?只需检查它是否在显示视图时被调用。

于 2012-10-08T06:21:43.570 回答