2011-07-28 147 views

回答

15

框架如果你正在寻找解决这个问题,那么你应该子类的UITableViewCell并重写为正确绘制的所有状态处理方法强的真正出路你自己的删除按钮(不要在这些方法中调用超级按钮)。但还有另一种简单的方法:

@implementation CustomCell 
- (void)layoutSubviews { 
     [super layoutSubviews]; 
     if (self.showingDeleteConfirmation) { 
      if ([self.subviews count] < 4) return; 
      UIView *delBtn = [self.subviews objectAtIndex:3]; 
      delBtn.frame = CGRectOffset(delBtn.frame, 0, 10); 
     } 
} 
@end 
+8

'[self.subviews objectAtIndex:3]'迟早会被打破。重写状态处理和绘制自定义删除按钮是更好的主意。 –

+0

是的,如果我们使用数组,我们应该在每次按索引访问项目之前检查它的边界。 – UIBuilder

+0

这真的解决了我的问题。但我有一个问题。当删除按钮出现时,它似乎正在从原来的位置移动到我刚刚设置的新位置,看起来很奇怪。我们如何使删除按钮从我们为其设置原点的相同位置出现。 – Nitish

-2

请尝试更改附件查看

+1

你可以扩展一点吗?我正在寻找使用didTransitionToState:在我的UITableViewCell子类,但我没有任何运气设置accessoryView框架。 – fuzzygoat

0

相反的didTransitionToState:

如何使用-(void)willTransitionToState:和设置editingAccessoryView的框架?

- (void)willTransitionToState:(UITableViewCellStateMask)state 
{ 
    if (state == UITableViewCellEditingStyleDelete) 
    { 

     NSInteger num = 10; 

     UIView.frame = CGRectMake(UIView.frame.origin.x,UIView.frame.origin.y - num, 
     UIView.size.width,UIView.size.height); 
    } 
}