确定UITableViewCell是否正在从“swipe”或“self.editButton”进行编辑

时间:2010-12-01 04:21:33

标签: iphone cocoa-touch uitableview

我正在尝试确定UITableViewCell子类是否处于来自用户滑动的编辑模式(在这种情况下我不需要缩进我的子视图),或者是用户按下与UITableViewController关联的“编辑”按钮。 (在这种情况下,我这样做。)

我知道从单元格的角度来看,这是可能的,因为self.textLabel视图会自动缩进。我试过了:

-(void)layoutSubviews {
   [super layoutSubviews];

   CGRect labelFrame = self.textLabel.frame;
   labelFrame.origin.x += 5;
   myCustomUILabel.frame = labelFrame;
}

但我的自定义标签没有正确缩进。 (虽然self.textLabel视图可以吗?)

我想避免以下情况:

  • 为单元格提供对父表的引用。
  • 覆盖UITableViewController类中的方法,让单元格知道它们是单独编辑还是整个表格正在编辑。

2 个答案:

答案 0 :(得分:6)

您可以覆盖willTransitionToState:子类中的UITableViewCell。按下“编辑”按钮时,状态为UITableViewCellStateShowingEditControlMask(= 1),滑动时为UITableViewCellStateShowingDeleteConfirmationMask(= 2)。

答案 1 :(得分:1)

您不应该手动进行缩进。 UITableViewCell将为您完成!

您所要做的就是确保将子视图添加到UITableViewCell的“contentView”。这就是self.textLabel正确缩进的原因。

查看UITableViewCell的contentView属性文档:

UITableViewCell对象的内容视图是单元格显示的内容的默认超级视图。如果您想通过简单地添加其他视图来自定义单元格,则应将它们添加到内容视图,以便在单元格进入和退出编辑模式时将它们正确定位