【问题标题】:Grouped UITableView with custom UILabels in Editing Mode在编辑模式下使用自定义 UILabel 分组 UITableView
【发布时间】:2011-05-23 22:59:58
【问题描述】:

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

如果我使用标准 cell.textLabel,标签会调整大小并保持在单元格的边界内。关于如何使用自定义 UILabels 执行此操作的想法?

【问题讨论】:

    标签: ios iphone uitableview resize


    【解决方案1】:

    你需要实现和使用这两个 UITableViewDelegate 方法:

    – tableView:willBeginEditingRowAtIndexPath:
    – tableView:didEndEditingRowAtIndexPath:
    

    在 willBegin 中,将 UILabel 框架设置为较小的宽度,并在 didEndEditing 上将宽度设置为正常大小。

    例如,如果你的 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所需的单元格。
    猜你喜欢
    • 1970-01-01
    • 2014-06-15
    • 2012-11-19
    • 1970-01-01
    • 2012-12-18
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多