2

我肯定在这里遗漏了一些东西。这不应该那么难。我正在尝试在 iPad 上的 UITableView 中的项目列表上实现基本的滑动删除功能。一切似乎都正常,除了当单元格向左滑动时,没有删除按钮,只有空白区域。以下是我在相应功能中的内容。

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (self.state == AMListMenu && [indexPath row] > 1)
    {
        return YES;
    }

    return NO;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (self.state == AMListMenu && [indexPath row] > 1)
    {
        return UITableViewCellEditingStyleDelete;
    }

    return UITableViewCellEditingStyleNone;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }
}

编辑:

只是尝试随机的东西,我添加了以下代码。当我滑动列表单元格时,我看到我创建的红色删除按钮出现了一瞬间,然后滑出单元格的右边缘。因此,从外观上看,iOS 将 editAccessory 视图放在了单元格的边缘。仍在试图找出原因。

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
    MainMenuCell *cell = (MainMenuCell *)[tableView cellForRowAtIndexPath:indexPath];

    UIButton* btn = [[UIButton alloc]init];
    [btn setTitle:@"DELETE" forState:UIControlStateNormal];
    [btn setTitleColor:AMColorWhite forState:UIControlStateNormal];
    [btn setBackgroundColor:AMColorTradeMarkRed];
    [btn setFrame:CGRectMake(242, 0, 90, cell.frame.size.height)   ];

    [cell setEditingAccessoryView:btn];
    [cell.contentView addSubview:btn];
}
4

1 回答 1

0

我应该在不久前发布这个,但我忘记了。显然,iOS 无缘无故地将菜单 ViewController 下的幻灯片大小调整为全屏,而没有调整列表项的子视图的大小。所以当我刷屏删除的时候,删除按钮就隐藏在了父ViewController的主视图下。下面的代码行解决了这个问题。

[self.mainMenu.view setFrame:CGRectMake(0, 0, MENUWIDTH, self.view.frame.size.height)];
于 2014-12-17T17:59:59.980 回答