【问题标题】:UITableViewCell is hidden.UITableViewCell 被隐藏。
【发布时间】:2012-06-17 09:40:15
【问题描述】:

我的控制器中有一个UITableViewUITableView 的单元格有 xib。 由于某种原因,加载表格时,单元格的视图被隐藏了。

我可以选择单元格,我看到单元格不是 nil,视图也不是 nil,仍然隐藏单元格。

代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath
{
    NSString *cellIdentifier = @"CategoryCell";
    CategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil){
        NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
        for (id obj in topObjects){
            if ([obj isKindOfClass:[CategoryCell class]]){
                cell = (CategoryCell*)obj;
            }
        }
    }

    id object;
    if (indexPath.row < items.count)
        object = [items objectAtIndex:indexPath.row];
    if ([object isKindOfClass:[MenuCategory class]]) {
        // Configure the cell   
        MenuCategory *cellInfo = (MenuCategory *)object;
        [cell setCategory:cellInfo];
        }
    else if([object isKindOfClass:[MenuSubCategory class]]){
        // Configure the cell   
        MenuSubCategory *cellInfo = [self.items objectAtIndex:indexPath.row];
        [cell setSubCategory:cellInfo];
    }
    return cell;
}

【问题讨论】:

  • 你需要保留这个单元格 = (CategoryCell*)[obj retain];,它可能解决不了这个问题,但无论如何都应该保留
  • 感谢提醒。我已经添加了保留。但这没有帮助。
  • 问题在于单元格中的内容,因为单元格被正确引用尝试检查 [cell setSubCategory:cellInfo];或 [细胞集子类别:细胞信息];工作与否。

标签: iphone objective-c xcode uitableview


【解决方案1】:

第一:

NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
        for (id obj in topObjects){
            if ([obj isKindOfClass:[CategoryCell class]]){
                cell = (CategoryCell*)obj;
            }
        }

替换为

[[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];

并在您的类中声明一个成为 xib 所有者的 IBOutlet。这个出口可以指向你的细胞。然后,您必须将 Cell XIB 中的 Files Owner(必须属于上述代码所在的类)连接到您的单元。然后,您可以通过

引用您的单元格(例如,在声明一个属性之后)
self.myCellOutlet;

并且不必枚举 xib 中的所有对象。

你确定这个

[cell setSubCategory:cellInfo];

有效吗?

如果你真的认为你的手机只是被隐藏了,你有没有试过给它发一个

[cell setHidden:NO];

只是为了看看是否是这种情况以及错误是否与可见性状态不同?

【讨论】:

  • 嗨 pbx,我已经检查过了,视图没有隐藏。只是没有显示。您所询问的代码行肯定是有效的。关于您的建议,非常感谢您的努力,但我更喜欢标准方法。
  • 没问题。只是认为它会使您的代码更具可读性;-)
【解决方案2】:

非常抱歉浪费您的时间。

解决方案与代码无关。

表格比单元格窄。所以文本(写在单元格左侧)在表格边界之外。这就是它从屏幕上消失的原因。

【讨论】:

  • 奇怪的是,我正在以编程方式创建一个表格视图,并指定了委托,并正在创建 UITableViewCell 的自定义子类,但哪里都没有 cell.hidden = YES;但是默认情况下我的所有单元格都是隐藏的。太糟糕了,这个话题没有出人意料的解决方案。
  • 必须澄清我已经解决的解决方案。 tableview 是我正在实例化的 UITableViewController 自定义子类的一部分,在实例化它之后,它被 ARC 释放,尽管它​​的 tableview 属性包含在视图层次结构中。无论如何,添加子类 UITableViewController 对象作为强属性,单元格不再隐藏。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 2014-03-05
  • 1970-01-01
相关资源
最近更新 更多