在iOS 5.0及以上版本,UITableView的编辑模式才能正常工作。

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开始,它再次停止显示闹钟开关。以下是一些截图。
1) 编辑模式
2) 编辑后 (iOS 5.0)
3) 编辑后 (iOS 5.1及以上)
如果我向上滚动,然后再向下滚动(以重新绘制单元格),开关将再次出现。有人知道为什么会发生这种情况吗?奇怪的是,在iOS 5.0中它运作得很好,但现在却不行了。
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就足够了。

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

在调试模式下,我可以看到setEditing被调用了。问题是它从未执行动画。请记住,在iOS 5.0中它可以正常工作。 - gsach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接