繁体   English   中英

UItableViewCell DequeueReusableCellWithIdentifier removeFromSuperview

[英]UItableviewcell dequeueReusableCellWithIdentifier removeFromSuperview

这可能是一个简单的问题,但是我还没有找到正确的解决方案,所以我希望有人可以提供帮助。

我从情节提要中获得了一个带有三个标签的单元格的表格视图。 所有标签都通过IBOutlet连接,并具有正确的约束。

问题是我想基于数据删除第二个标签,以便保留约束,而第三个标签使用其较低的约束向第一个标签靠拢。

但是当我运行以下代码时:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *simpleTableIdentifier = @"GroupMaterialCell";

  GroupMaterialCell *cell = (GroupMaterialCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

  // get data and populate row
  if([self.materialitems count] >= indexPath.row) {

    Material *material = [self.materialitems objectAtIndex:indexPath.row];

    cell.folder.text = [NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Folder", nil), material.folder];cell.name.text = material.name;;
    cell.member.text = material.member_name;
    cell.date.text = [material getDate];
    cell.info.text = [NSString stringWithFormat:@"%@, %@", [material getType], [material getFilesize]];

    if([material.folder length] <= 0) {
        [cell.folder removeFromSuperview];
    }

  }

    return cell;
}

该代码可以完美工作,直到我向下滚动并重新使用单元格为止。 然后,第二个标签为“已消失”(removeFromSuperview),因此不可见。

有没有一种快速的方法,而无需在代码中创建标签(带有约束)并添加/删除它呢?

希望这一切都有道理,否则请询问。

UPDATE

解决方案是隐藏标签并在约束上设置优先级。

创建要切换的约束的IBOutlet

使用以下代码进行编辑。

if([material.folder length] <= 0) {
        [cell.folder setHidden:YES];
        cell.memberToFolder.priority = 500;
        cell.memberToName.priority = 900;
    } else {
        [cell.folder setHidden:NO];
        cell.memberToFolder.priority = 900;
        cell.memberToName.priority = 500;

    }

不要从单元格中删除任何东西,只要能见度就可以处理

      if([material.folder length] <= 0) {
              //set frame if required
                [cell.folder setHidden:true];
            } else {
             //set frame if required
               [cell.folder setHidden:false];
       }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM