表格视图的单元格问题由代码实例化

时间:2012-07-14 22:47:36

标签: objective-c ios5

我正在构建一个具有外部委托控制器的表视图,它是由代码创建的,而不是由storyboard创建的。我有细胞问题,它们没有显示,尽管执行正确到达委托方法:

构建方法:

-(void)buildCategorias{

    CGRect twitterFrame = CGRectMake(105, 83, 600, 568);

    categoriasView = [[UIView alloc] initWithFrame:twitterFrame];

    CGRect scrollViewFrame = CGRectMake(105, 83, 400, 568);

    categoriasTableView = [[UITableView alloc] initWithFrame:scrollViewFrame];

    categoriasController = [[categoriasViewController alloc] init];

    categoriasController.categorias = [[NSArray alloc] initWithObjects:@"Gafas", @"Relojes", @"Pantalones", @"Deportivas", @"Cazadoras", nil];

    [categoriasTableView setDelegate:categoriasController];

    [categoriasTableView setDataSource:categoriasController];

    [self.categoriasView addSubview:categoriasTableView];

    [categoriasTableView reloadData];

    [self.view addSubview:categoriasView];



}

自定义单元格:categoriasCell.h

@interface categoriasCell : UITableViewCell{

    UILabel *title;

}

@property (nonatomic, strong) IBOutlet  UILabel *title;

@end

categoriasCell.m

@implementation categoriasCell

@synthesize title;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

表视图委托:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    categoriasCell *cell = [self.tableView 
                      dequeueReusableCellWithIdentifier:@"categorias"];

    if (cell == nil) {
        cell = [[categoriasCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:@"categorias"];
    }

    cell.title.text = [categorias objectAtIndex:indexPath.row];


    return cell;
}


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1;
}

    @end

表视图为空,没有内容。

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

根本没有细胞,或者是否有正确数量的细胞,但它们是空的?

如果根本没有单元格,请检查是否确实实现了其他所需的委托方法(tableView:numberOfRowsInSection:),并确实它确实返回了您期望的单元格数。

否则,您可能缺少从其NIB加载单元格的代码(我假设您已经在categoriasCell中有一个IBOutlet,并且没有代码实际将标题标签添加到看,你打算从NIB来的单元格)。有关如何加载单元格的NIB并在委托方法中使用它,请参阅Apple's documentation。如果你没有从NIB加载它,那么文本字段将不在那里,所以你的单元格将是空的。

两个非致命的编码/风格问题:

  • 初始化单元格时,您将UITableViewCellSelectionStyleNone作为样式传递。你真的应该在这里使用UITableViewCellStyleDefault,因为参数是单元格样式,而不是选择样式。
  • 您的班级名称应大写(CategoriasCell而不是categoriasCell)。