故事板 - 具有相同自定义单元格的多个UITableViewControllers

5
我有时会在我的storyboard中复制/粘贴自定义单元格,这使得维护变得棘手(例如,必须在几个UITableView中每个自定义单元格上进行简单更改)。
是否可以在一个storyboard或xib文件中创建一个自定义单元格,然后从多个UITableView引用它?我想指定一个NIB名称来获取静态/原型单元格,类似于在编辑普通xib文件时可以为UIViewController指定NIB名称的方式。
顺便说一句...我知道如何通过代码完成这个操作。我正在寻找的是在storyboard编辑器内完成此操作的方法。
2个回答

1

我知道一种方法,但需要在自定义类中编写一些代码。创建 UITableViewCell 的子类,并从 nib 文件中加载该子类。然后只需将单元格的类设置为此子类即可。要了解一个良好的方法,使视图可以使用从 nib 文件中加载的不同版本进行替换,请参考这个 博客帖子


0

实际上,您不必创建自定义类。如果您正在编写版本 4.0 及更高版本的代码,则可以使用 UINib 来创建它。您还可以将其缓存以提高性能。

UIViewController.h

@property (nonatomic, retain) UINib *cellNib;
@property (nonatomic, retain) IBOutlet MyCustomTableViewCell *customCell;

UIViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Cache the tableviewcell nib
    self.cellNib = [UINib nibWithNibName:@"MyCustomTableViewCell" bundle:nil];
}

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

    MyCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        [self.cellNib instantiateWithOwner:self options:nil];
        cell = customCell;
        self.customCell = nil;
    }
    // Set title and such
}

如果没有使用ARC,请不要忘记在dealloc中释放它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接