0

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

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

这是代码:

- (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;
}
4

2 回答 2

0

哦,很抱歉浪费你的时间。

解决方案与代码无关。

桌子比单元格窄。所以文本(写在单元格左侧)在表格边界之外。这就是为什么它从屏幕上消失了。

于 2012-06-17T11:21:52.603 回答
0

第一的:

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。这个出口可以指向你的细胞。然后,您必须将Files OwnerCell XIB 中的(必须属于上述代码所在的类)连接到您的单元。然后,您可以通过以下方式引用您的单元格(例如在声明属性之后)

self.myCellOutlet;

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

你确定这

[cell setSubCategory:cellInfo];

作品?

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

[cell setHidden:NO];

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

于 2012-06-17T10:35:21.577 回答