gpt4 book ai didi

iphone - 如何避免在 UITableViewCell 上滑动删除调用 setEditing

转载 作者:IT王子 更新时间:2023-10-29 08:18:08 24 4
gpt4 key购买 nike

我知道,当我实现 tableView:willBeginEditingRowAtIndexPath:tableView:didEndEditingRowAtIndexPath: 时,滑动删除不会调用 setEditing:animated: 在我的 UITableViewController(作为 UITableView 的委托(delegate))。

我有一个自定义的 UITableViewCell 实现,它在进入编辑模式时对 UI 进行了一些重新排列。我想变得聪明,并在 TableView 单元格实现本身的 setEditing:animated: 中实现了这些更改(这显然是有道理的)。

但是,当滑动删除时,我仍然会在我的 TableView 单元格实现中调用 setEditing:animated:。而且我没有参数告诉我我正在刷卡。调用堆栈也没有显示我自己的方法可以让我有机会做某事。它表明 setEditing:animatedUITableView 中被调用。唯一明显的是,它不会在委托(delegate)(在这种情况下是我的 Controller )中调用。

当然,我可以在 tableView:willBeginEditingRowAtIndexPath: 中的单元格中设置一个标志,告诉它下一个 setEditing 调用将用于滑动,但确实如此听起来不像是好风格。

编辑:它甚至不起作用,因为不能保证 tableView:didEndEditingRowAtIndexPath: 被调用,所以我无法设置标志。

有什么想法可以优雅地解决这个问题吗?

最佳答案

我认为 UITableViewCell 的 willTransitionToState:实例方法可能就是您正在寻找的。像这样:

- (void)willTransitionToState:(UITableViewCellStateMask)state
{
if (state == UITableViewCellStateShowingDeleteConfirmationMask) {
swipedToDelete = YES; // BOOL ivar
}
}

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
if (swipedToDelete) {
// do your stuff, or don't
}
}

是吗?

关于iphone - 如何避免在 UITableViewCell 上滑动删除调用 setEditing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6437916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com