Ios 编辑模式下带有自定义UILabel的分组UITableView

Ios 编辑模式下带有自定义UILabel的分组UITableView,ios,iphone,uitableview,resize,Ios,Iphone,Uitableview,Resize,我有一个分组的UITableView,用户可以在其中进入编辑模式并从表中删除行。表的每个单元格都有两个ui标签。当表格进入编辑模式时,自定义的UILabels会向右推并超出单元格的右边框 如果使用标准的单元格.textLabel,则标签会调整大小并保持在单元格的边框内。有关如何使用自定义的UILabels?实现和使用这两种UITableViewDelegate方法的想法: – tableView:willBeginEditingRowAtIndexPath: – tableView:didEnd

我有一个分组的
UITableView
,用户可以在其中进入编辑模式并从表中删除行。表的每个单元格都有两个
ui标签
。当表格进入编辑模式时,自定义的
UILabels
会向右推并超出单元格的右边框


如果使用标准的
单元格.textLabel
,则标签会调整大小并保持在单元格的边框内。有关如何使用自定义的
UILabels

实现和使用这两种UITableViewDelegate方法的想法:

– tableView:willBeginEditingRowAtIndexPath:
– tableView:didEndEditingRowAtIndexPath:
在willBegin中,将UILabel框架的宽度设置为较小,并在DiEndediting中将宽度设置为正常大小

例如,如果您的UILabel被挤出边界50个像素,则在您的方法中,您可以执行以下操作:

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

    CGRect newFrame = thisCell.someUILabel.frame;

    newFrame.size.width -= 50;

    thisCell.someUILabel.frame = newFrame;
}

- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *thisCell = (UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];

    CGRect newFrame = thisCell.someUILabel.frame;

    newFrame.size.width += 50;

    thisCell.someUILabel.frame = newFrame;
}

这适用于一行,但我的问题是,当我点击“编辑”按钮时,每个单元格旁边都会出现红色圆圈,这就是我的问题所在。仅当选择删除单行时,才会调用willBeignEditingRowAtIndexPath。是否使用子类单元格?或者您正在将UILabel作为子视图添加到cellForRowAtIndexPath中?听起来你在做后者…我已经将UILabel添加为子视图。尝试子类化UITableViewCell,然后查看问题是否仍然存在。。。。这样做的另一个好处是,您可以对UILabel子视图进行更高级别的控制,因为现在可以更轻松地访问所需单元格中的特定UILabel。