2016-02-01 85 views
5

如何在多个UITableViewCell子类中共享一个xib使用相同xib的多个UITableViewCell子类?

它们都具有相同的视图界面,​​所以我不想为了更改单元类而多次复制相同的xib

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.tableView registerNib:[UINib nibWithNibName:@"BaseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"BaseCell"]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BaseCell *baseCell = [tableView dequeueReusableCellWithIdentifier:@"BaseCell" forIndexPath:indexPath]; 

    ... 

我所需要的,而不是在这里是一个实例我ChildCell - 这是BaseCell一个子类。有任何想法吗?

+0

改变类的结构可能是更好的方法。根据细胞的当前状态添加细胞状态和响应是另一种选择。 – meth

回答

1

使用组合而不是继承。将BaseCell类与它的单元格之间的1-1关系保持在nib中,为您创建的实现对象添加一个属性,并在您将它出列后添加到单元对象中。

1

现在没有办法为多个单元使用相同的xib

但是你可以分开所有单元将使用的xib的一部分。

在每个单元格中,您将为此类子视图设置一个子视图,现在您可以对所有单元格重复使用此视图。

你可以看到我的形象在这个例子中:

第一个单元格:

enter image description here

第二单元: enter image description here

与子视图两种细胞使用:

enter image description here

现在你不需要重复的xib,并且可以重用这部分UI。

相关问题