UITableViewCell是隐藏的。

时间:2012-06-17 09:40:16

标签: iphone objective-c xcode uitableview

我的控制器中有一个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;
}

2 个答案:

答案 0 :(得分: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。这个插座可以指向您的牢房。然后,您必须将Cell XIB中的Files Owner(必须是上述代码所在的类)连接到您的单元格。然后,您可以通过

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

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

你确定吗

[cell setSubCategory:cellInfo];

的作品?

如果你真的认为你的手机只是隐藏了,你是否尝试发送

[cell setHidden:NO];

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

答案 1 :(得分:0)

对不起,浪费你的时间。

解决方案与代码无关。

桌子比细胞窄了。因此,文本(写在单元格的左侧)超出了表格范围。这就是它在屏幕上丢失的原因。