【发布时间】:2018-01-23 03:26:16
【问题描述】:
我有一个表格视图,当用户在行上滑动时显示删除按钮。
一切正常,但由于条件有限,无法删除几行。 我如何在 UI 上显示一条消息,告诉该行不能被删除。 我已经实现了以下代表
tableView:canEditRowAtIndexPath:
如果需要删除行,则返回 true 和 false。
但是当用户登陆屏幕或调用重新加载表视图时,会调用此方法,因此我无法在不添加一些奇怪的 if 条件的情况下将代码放入此委托中。
我在委托中得到了这个工作
tableView:editingStyleForRowAtIndexPath:
只有在用户滑动时才会调用。
但是这个委托的问题是,在 iOS 10.2 中,之前的每一行都调用了这个委托,canEditRowAtIndexPath 被调用,所以它可以工作。但在最新的 iOS 11.2.2 中,editingStyleForRowAtIndexPath 在canEditRowAtIndexPath 之后被调用,这导致只调用那些可以删除的行而不是其他行。
iOS 11.2 中的这种模式确实有意义,但它不允许我在我的解决方案中使用这个委托。谁能建议我如何实现所需的行为?
【问题讨论】:
-
您在寻找
tableView:commitEditingStyle:forRowAtIndexPath:吗?有了这个,您可以通过检查editingStyle根据条件显示警报 -
'tableView:commitEditingStyle' ,仅对启用了编辑的行调用。因此它可用于确认用户是否要删除行,但在我的情况下,我不想向用户显示该行可以被删除,而只是给出一个类似 toast 的消息,该行不能被删除。
-
我认为您最好的选择是在您的单元格中添加手势识别器。
-
@Skywalker 我试图将手势放在我不想显示为可以删除的单元格上,但在创建单元格时我无法确定我的状况,我必须检查每个用户在行上滑动的时间,以决定是否可以向用户显示删除选项。
-
我认为你应该使用
tableView:canEditRowAtIndexPath:并使用奇怪的if条件。
标签: ios objective-c swift uitableview