0

我已经在 Interface Builder 中创建了我的自定义单元格并为其创建了一个自定义 UITableViewCell 类,但是当它加载时没有对其进行任何更改。我在自定义类中有这段代码:

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

        //Get the wedding date and display it
        myLabel.text = @"Hello";
    }
    return self;
}

myLabel 已在标题中声明,具有属性并已在界面生成器中链接,但是当我运行应用程序并查看我的表时,我没有得到我的“你好”文本。有任何想法吗?

谢谢。

编辑:

我没有使用 nib 文件,我将它放在 Storyboard 中的 UITableViewController 中。另外,这是下面的 cellForRowAtIndexPath 代码,我只是有一个填充了所需单元格标识符的数组,然后创建了所述数组:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    static NSString *CellIdentifier;

    for (int cell = 0; cell <= [tableCellsArray count]; cell++) 
    {
        if ([indexPath row] == cell) 
        {
            CellIdentifier = [tableCellsArray objectAtIndex:cell];
        }
    }

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the cell...

    return cell;
}
4

2 回答 2

0

浏览Apple 文档,其中描述了自定义 UITableViewCell 。

在上面的页面中,pl。见清单 5-5 Loading a cell from a nib file and assigning it content,它清楚地描述了使用 nib 文件自定义单元格。

于 2012-04-06T17:01:28.237 回答
0

你如何创建你的细胞?你是从笔尖加载它还是分配它?如果您分配它,您需要正确初始化您的实例字段(例如 myLabel)。如果你从笔尖加载电池,我担心

  • (id) initWithCoder:(NSCoder *)aDecoder

是您要覆盖的 init 方法。

无论如何,您可以放置​​一个断点以确保您通过那里并打印 myLabel 以确保它已正确初始化。

- 编辑

如果您想使用 nib 自定义单元格视图,则无法使用 initWithStyle:reuseIdentifier: 方法初始化单元格视图。

使用 initWithStyle:reuseIdentifier: 意味着您将通过自己的实现来初始化所有视图(例如,您将分配、初始化和配置所有视图,它不会使用 xib 文件)

如果要使用 xib 文件,则需要使用 NSBundle 中的 loadNibNamed:owner:options: 方法。

通常,我见过两种实现:

[[NSBundle mainBundle] loadNibNamed:@"" owner:self options:nil];

在此实现中,您加载您的 xib,将 UIViewController 子类作为所有者。在 xib 中,确保 File Owner 类是您的 UIViewController 子类。然后只需将单元格与您的 UIViewController 子类的属性链接并调用 loadNibNamed:owner:options: 只会分配和初始化一个新的单元格视图,该视图将在您的 UIViewController 子类的属性中可用。这是 Apple 文档建议您执行的操作。

NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"" owner:nil options:nil]; UITableViewCell myCustomCell = [nibObjects objectAtIndex:0];

在此实现中,您无需将任何所有者传递给 xib 文件并获取您想要的对象。只需确保您的 xib 文件只有一个对象,即单元格视图。我更喜欢这种方法,因为我认为拥有一个用于创建单元格的属性是“奇怪的”,但是您需要确保您的 xib 文件的内容将您的自定义单元格视图保持在 0 索引处。

无论您选择哪种方法,请记住加载 xib 将调用

initWithCoder: 而不是 initWithStyle:reuseIdentifier:

最后,我建议您查看 Aadhira 指向 Apple 文档的链接,其中举例说明了如何将自定义 UITableCellView 与 xib 文件一起使用。

于 2012-04-06T17:04:40.603 回答