对于UIViewController重用目的,我希望仅在满足条件的情况下允许“滑动删除”手势。有没有办法实现这个目标?
如果我添加以下UITableViewController委托方法:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
启用了“滑动删除”,但我无法区分我要禁用此手势的情况
答案 0 :(得分:5)
- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
BOOL someCondition = // figure out whether you want swipe to be available
return (someCondition) ?
UITableViewCellEditingStyleDelete : UITableViewCellEditingStyleNone;
}
来自本书这一部分的结尾:
http://www.apeth.com/iOSBook/ch21.html#_deleting_table_items
答案 1 :(得分:0)
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (UITableViewCellEditingStyleDelete==YES)
{
// here goes your code
}
}
答案 2 :(得分:0)
将您的逻辑放在委托方法
中- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
仅允许编辑奇数行:
-(UITableViewCellEditingStyle)tableView:(UITableView *)aTableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row % 2 == 1)
{
return UITableViewCellEditingStyleDelete;
}
else return UITableViewEditingStyleNone;
}
这是我喜欢教学的原因,因为它在很多情况下都非常有用 - 在代码块indexPath.row 2 == 1
中,检查indexPath的行是否为奇数。以下是它的工作原理:百分号称为模数。它的作用就像你在一张纸上一样,然后进行计算的其余部分 - 一旦你理解了这一点,你就会看到它将是多么强大。例如,您可以检查数字是否可以被另一个数字整除。
在我们的例子中,我们看看当我们将行除以2时剩余部分是什么。如果它为0,我们知道它可以被2整除,因此它是偶数。但是,如果它返回1,则该行是奇数。这是一个了不起的工具。