【发布时间】:2011-06-22 09:47:03
【问题描述】:
我知道,当我实现tableView:willBeginEditingRowAtIndexPath:和tableView:didEndEditingRowAtIndexPath:时,滑动删除不会在我的UITableViewController(作为UITableView的代表)调用setEditing:animated:。
我有一个自定义的UITableViewCell 实现,它在进入编辑模式时会进行一些 UI 重新排列。我想变得聪明一点,并在表格视图单元实现本身的setEditing:animated: 中实现这些更改(这显然是有道理的)。
但是,当滑动删除时,我仍然在我的表格视图单元格实现中接到setEditing:animated: 的电话。而且我没有参数告诉我我正在刷卡。调用堆栈也没有显示我自己的任何方法,这些方法可以让我有机会做某事。它表明setEditing:animated 在UITableView 处被调用。唯一明显的是,它没有在委托(在这种情况下是我的控制器)处调用。
当然,我可以在tableView:willBeginEditingRowAtIndexPath: 的单元格中设置一个标志,告诉它下一个setEditing 调用将用于滑动,但这听起来不太好。
编辑:它甚至不起作用,因为不能保证tableView:didEndEditingRowAtIndexPath: 被调用,所以我无法设置标志。
任何想法如何优雅地解决这个问题?
【问题讨论】:
-
我不确定我是否理解正确。所以你还是想在你的 UITableViewCell 的 setEditing:animated: 中做点什么,对吧?如果没有,这个链接有帮助吗? stackoverflow.com/questions/969313/…
-
我想启用滑动删除。但我希望能够区分“真实”编辑模式和为滑动删除设置的“伪”编辑模式。在
UITableViewDelegate中我可以区分两者,因为在滑动删除时不会调用setEditing:animated:。但是,我无法在UITableViewCell实现中有所作为。还是我不知何故?
标签: iphone ios uitableview swipe