3

编辑UITableView圆形红色按钮时,删除按钮与自定义单元格重叠。

我们如何调整自定义单元格的大小以便为红色圆形按钮和删除按钮留出空间。

4

2 回答 2

4

使用此代码,您可以根据编辑单元格的方式和所处的阶段执行不同的任务。我对代码进行了大量注释,因为我自己花了很长时间才弄清楚这一点。(变得混乱)

  - (void)willTransitionToState:(UITableViewCellStateMask)state {

        [super willTransitionToState:state];

        if (state == UITableViewCellStateDefaultMask) {

            NSLog(@"Default");
            // When the cell returns to normal (not editing)
            // Do something...

        } else if ((state & UITableViewCellStateShowingEditControlMask) && (state & UITableViewCellStateShowingDeleteConfirmationMask)) {

            NSLog(@"Edit Control + Delete Button");
            // When the cell goes from Showing-the-Edit-Control (-) to Showing-the-Edit-Control (-) AND the Delete Button [Delete]
            // !!! It's important to have this BEFORE just showing the Edit Control because the edit control applies to both cases.!!!
            // Do something...

        } else if (state & UITableViewCellStateShowingEditControlMask) {

            NSLog(@"Edit Control Only");
            // When the cell goes into edit mode and Shows-the-Edit-Control (-)
            // Do something...

        } else if (state == UITableViewCellStateShowingDeleteConfirmationMask) {

            NSLog(@"Swipe to Delete [Delete] button only");
            // When the user swipes a row to delete without using the edit button.
            // Do something...
        }
    }

你说你添加了自定义标签和什么没有,我之前在使用 tableviews 时也做过同样的事情。我通常更喜欢使用动画块“隐藏”重叠的视图,例如:

[UIView animateWithDuration:0.3

                        animations:^ {
                            self.myTableCellSubview.alpha = 0.0f;
                        }
        ];

在上面的每个 if 语句中,并根据状态将 alpha 从 1.0f 更改为 0.0f。

至于一般缩进,在属性检查器中,确保选中“编辑时缩进”,您也可以通过以下方式以编程方式设置:

cell.shouldIndentWhileEditing = YES;

如果这不起作用,您的自动调整大小可能会有些古怪。在故事板或 xib 中,选择需要缩进的单元格子视图,然后转到大小检查器(标尺选项卡)。如果子视图需要从左侧缩进( ---> ),请确保将其固定在左侧:

在此处输入图像描述

如果子视图需要从右侧缩进( <--- ),请确保将其固定在右侧:

在此处输入图像描述

希望这可以帮助!

于 2013-01-07T03:43:34.490 回答
1

您可以覆盖我认为的其中一种方法并调整自定义单元格的大小。不过,不确定这正是您根据问题提出的问题。

- (void)willTransitionToState:(UITableViewCellStateMask)state
- (void)didTransitionToState:(UITableViewCellStateMask)state
于 2013-01-06T21:53:59.443 回答