创建自定义UITableViewCell - 我可以将设计链接到XIB文件吗?

时间:2010-12-29 18:17:56

标签: ios4 uitableview xcode4

我有一个继承自UITableViewCell的自定义类。我知道如何使用layoutSubviews动态地将项添加到自定义单元格,但是我有一个相当复杂的单元格,我想从Interface Builder和XIB文件中设计。

有办法做到这一点吗?如果是这样,怎么样?请记住,我是XCode的新手,所以你提供的细节越多越好。 :)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在您的UITableViewController子类中,为您的自定义单元类添加一个IBOutlet:

@property(nonatomic,retain)IBOutlet UITableViewCell *customCell;

然后,在自定义单元格xib中,将File的所有者设置为UITableViewController子类,并将最外面的视图分配给File的所有者上的IBOutlet。对于要以编程方式访问的每个子视图,请为其tag属性分配唯一值。假设您的自定义单元格有3个标签,您已标记为1,2和3。

最后,在您的cellForRowAtIndexPath方法中,使用loadNibNamed方法将笔尖加载到插座中。请参阅API docs以获取有关其工作原理的说明。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    // assuming nib is MyCustomCell.xib
    [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];

    // assign IBOutlet to cell
    cell = customCell;

    // clear IBOutlet
    self.customCell = nil;
}

现在,您可以使用单元格上的viewWithTag方法访问自定义单元格中的已标记视图:

UILabel *label1 = (UILabel *)[cell viewWithTag:1];
label1.text = @"foo";

UILabel *label2 = (UILabel *)[cell viewWithTag:2];
label2.text = @"bar";

UILabel *label3 = (UILabel *)[cell viewWithTag:3];
label3.text = @"baz";