我制作了自定义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中工作就像一个魅力,现在它不起作用。
答案 0 :(得分:1)
问题似乎是
的相互作用[self.alarmSwitch setEnabled:NO];
和setAlpha动画。
解决问题的最简单方法是在setAlpha之前调用动画块内的setEnabled行,如下所示:
[UIView animateWithDuration:0.3
animations:^{
[self.alarmSwitch setEnabled:NO];
[self.alarmSwitch setAlpha:0.0];
}];
顺便问一下,为什么你甚至将启用的属性设置为NO?将alpha属性设置为0就足够了。
答案 1 :(得分:0)
你在哪里调用tableView的setEditing方法?只需检查在显示视图时是否调用它。