自定义表格单元格加载数据目标C iOS -

时间:2012-04-05 23:53:21

标签: iphone objective-c ios cocoa-touch uitableview

目前我有以下方法,但它不太有用......

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

    static NSString *MyIdentifier = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:self options:nil];
        cell = tvCell;
        self.tvCell = nil;
    }

    UILabel *label;
    label = (UILabel *)[cell viewWithTag:5];
    label.text = [NSString stringWithFormat:@"Hole #%d", indexPath.row];

    return cell;
}

创建表视图没有错误,但每个单独的单元格什么都没有,但显然TVCell.xib有一个标签为5的标签。我唯一的问题就是这个。我不太明白苹果给出的这些步骤......

  1. 在nib文档窗口中选择File's Owner,打开检查器的Identity窗格,并将File's Owner的类设置为自定义视图控制器类。

  2. 将文件所有者的单元格出口(现在是自定义子类的占位符实例)连接到nib文件文档中的表视图单元格对象。

  3. 以下是这些步骤...... http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7

    有人可以为我这样的菜鸟解释一下这些步骤吗?我认为这就是我搞砸了,但我本可以做错什么。

3 个答案:

答案 0 :(得分:1)

我认为TcCell不会成为自我的财产。当单元格队列为空时,请尝试此操作:

if (cell == nil) {
    cell=[[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:self options:nil];
}

答案 1 :(得分:0)

有些难以解释你说的用语言不理解的步骤。我建议寻找有图片或视频的教程。 (我做了一个快速搜索,有很多可用的,但我真的不想选择一个指导你,而不是更仔细地阅读它们。)

但是,我更喜欢以这种方式创建自定义表格视图单元格: http://www.mobilesce.com/2011/12/27/the-best-way-to-do-custom-reusable-uitableviewcells/

它与苹果文档中描述的方式略有不同,但我看到很多人使用它,我发现它更容易。

答案 2 :(得分:0)

NSBundle方法loadNibNamed:owner:options:返回包含nib文件中顶级对象的NSArray。试试这个:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:self options:nil];
    cell = [nibArray objectAtIndex:0];
}