【问题标题】:UITableView some cells not visibleUITableView 一些单元格不可见
【发布时间】:2018-11-22 11:23:10
【问题描述】:

我遇到了一个关于 UITableViews 的奇怪问题。我表格中的一些单元格位于屏幕的最右侧,除了前几个字符外,它无法阅读。当我滚动表格时,受影响的单元格会发生变化。我添加了几个屏幕截图,以帮助更好地了解我正在处理的内容。

Some views are invisible

Different views are invisible

我使用以下代码填充表格:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"NewCell";
    NewProductCell *cell = [tableView
                           dequeueReusableCellWithIdentifier:CellIdentifier
                        forIndexPath:indexPath];

    long row = [indexPath row];

    cell.medicineLabel.text = [_medicineArray objectAtIndex:row];
    if([[_medicineArray objectAtIndex:row]  isEqual: @"Alfabetisch"]||    [[_medicineArray objectAtIndex:row]  isEqual: @"Eerder besteld"]){
        [cell setUserInteractionEnabled:NO];
    }
    cell.accessoryType = UITableViewCellAccessoryNone;
    return cell;
}  

_medicinceArray 是从网络服务器获取的字符串列表,我已经验证这不是问题的根源。

提前致谢。

【问题讨论】:

  • medicineArray 中可能有空字符串
  • 不相关但将long更改为NSInteger
  • 您可能需要包含您的 NewProductCell 代码才能获得正确的答案。
  • 你用tableview注册了cell吗?或者更确切地说,您是如何注册的?另外,如果您将文本静态分配给标签而不是从数组中获取,会发生什么?

标签: ios objective-c uitableview uistoryboard


【解决方案1】:

我猜你的细胞状态有问题。特别是当细胞不能随机工作时。

您应该注意单元格是可重复使用的。从您的代码中,我认为您只希望禁用具有值 @"Alfabetisch" 或 @"Eerder besteld" 的单元格,其他单元格是交互式的。

但真正发生了什么?

如果您向上和向下滚动,禁用的单元格将移出视图,最终其中一些被重用以像另一个单元格一样显示应启用的数据,但由于没有启用它们的代码,它将保持禁用状态。因此,如果您尝试更多,最终所有单元格都会被禁用。

所以对于您的问题,这也可能是您的隐形标签出现奇怪行为的原因。

您应该检查方法之外的代码(修改单元格或标签的任何代码),或故事板单元格中标签的自动布局。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多