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

时间:2011-11-29 15:46:19

标签: objective-c ios5 storyboard

我偶尔会在我的故事板中找到copy/pasting UITableViews个自定义单元格,这会逐渐成为维护噩梦(即,现在必须对几个{{1}的每个自定义单元格进行简单的更改})。

是否可以在情节提要或UITableViews文件中创建一个自定义单元格,然后从多个xib引用它?我认为必须有一种为UITableViews单元格指定NIB名称的方法,类似于在编辑时为static/prototype指定NIB名称的方式正常UIViewController

BTW ......我知道如何通过代码来做到这一点。我正在寻找的是从故事板编辑器本身中做到这一点。

2 个答案:

答案 0 :(得分:1)

我知道一种方法,但它确实需要一个自定义类中的一些代码。创建UITableViewCell的子类,从nib加载自身。然后只需将您的单元格类设置为此子类。有关使用从笔尖加载的不同版本替换自身的好方法,请参阅此blog post

答案 1 :(得分: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中释放它