【问题标题】:Weird animations when editing custom cell?编辑自定义单元格时出现奇怪的动画?
【发布时间】:2012-01-11 19:35:57
【问题描述】:

我使用 IB 在 Xcode 4 中创建了一个UITableViewCell。但是由于某些奇怪的原因,当我触发我的编辑按钮时,cell 的行为非常奇怪,并且没有与普通表格视图单元格相同的动画。我不知道发生了什么,我尝试在我的自定义单元类中实现-(void)setEditing:(BOOL)editing animated:(BOOL)animated,但仍然没有任何效果。

更新:我正在使用单元格的ViewController,在cellForAtIndex 下有此代码来显示单元格。

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil)
    {
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
    for (id currentObject in topLevelObjects) 
    {
        if ([currentObject isKindOfClass:[UITableViewCell class]]) 
        {
            cell = (CustomCell *) currentObject;
            break;
        }
        return cell;
    }
}

普通视图:

点击编辑按钮时:

即使在应该将文本移到一边时滑动它也会覆盖文本:

【问题讨论】:

    标签: iphone uitableview interface-builder editing


    【解决方案1】:

    第一个建议;不要将 IB 用于自定义 UITableViewCells。

    下一个;确保将任何自定义视图添加到 UITableViewCellcontentView... 而不仅仅是单元格本身。当显示编辑部分(如删除按钮)时,UITableViewCell 的 contentView 将自动缩小。如果您在UILabel / 添加到contentView 的任何内容上具有正确的 UIViewAutoresizing 掩码,它将正确调整大小/移动。

    编辑,在 cmets 中回答您的问题:

    与任何自定义视图一样。您可以将其单独设为一个类,或者根据您的需要,临时构建它。一个类通常是最好的,因此您可以引用您添加到单元格中的任何自定义内容并重用单元格/等。

    但是,这里是构建一个 ad-hoc 的示例。

    UIImageView * myCheckBox = ...
    UILabel * myLabel = ...
    UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
    [cell.contentView addSubview:myCheckBox];
    [cell.contentView addSubview:myLabel];
    self.customCell = cell;
    

    编辑#2

    - (void)layoutSubviews
    {
        [super layoutSubviews];
        self.textLabel.frame = CGRectMake(50, self.textLabel.frame.origin.y, self.contentView.frame.size.width - 50, self.textLabel.frame.size.height);
    }
    

    【讨论】:

    • @Ravin455 - 我完全理解你的问题。我去过那儿。无需进一步解释。
    • 如果我必须以编程方式添加它,那么我应该如何添加它?我唯一的问题是在左侧添加复选框 UIButton。
    • 我试过了,只是表格视图单元格样式为UITableViewCellStyleValue1。我在 IB 中选择了一个自定义单元格,而不是添加 UIImageView。我可以拥有复选框功能的唯一方法是使用UIButton
    • 好的,所以使用UIButton 而不是UIImage 视图...没有什么不同。
    • 我尝试添加一个UIButton 并将框架设置到一边,但它只是覆盖了textLabel
    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多