1

为了 UIViewController 重用目的,我只想在满足条件的情况下允许“滑动删除”手势。有没有办法做到这一点?

如果我添加以下 UITableViewController 委托方法:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

“滑动删除”已启用,但我无法区分在哪些情况下我想禁用此手势

4

3 回答 3

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.aeth.com/iOSBook/ch21.html#_deleting_table_items

于 2013-04-04T14:01:57.963 回答
0
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (UITableViewCellEditingStyleDelete==YES)
    {
          // here goes your code
    }
}
于 2013-04-04T14:01:29.990 回答
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,则该行是奇数。这是一个了不起的工具。

于 2013-04-04T14:07:44.560 回答