Yog*_*ton 6 objective-c uitableview xib custom-cell ios
我正在尝试将一个XIB文件用于多种类型的自定义UITableViewCell子类(相同的IBOutlets - 相同的外观 - 不同的方法和逻辑).
我怎样才能做到这一点?
严格来说,该框架并不强制执行 xib 与其文件所有者的严格绑定。您可以使用以下代码来加载笔尖:
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCustomCell" owner:nil options:nil];
EXFirstCustomCell *firstCell = (EXFirstCustomCell*)[nibContents objectAtIndex:0];
firstCell.firstView = [firstCell.contentView viewWithTag:VIEW_TAG];
firstCell.button = [firstCell.contentView viewWithTag:BUTTON_TAG];
Run Code Online (Sandbox Code Playgroud)
根据您的业务逻辑,您可以转换结果[nibContents objectAtIndex:0];
以适合您的自定义UITableViewCell
类。
编辑#1:
类型转换通常是一个坏主意,因为它firstCell
仍然是一种 class UITableViewCell
。一个好主意是创建您自己的构造函数,将nibContents
作为参数传递并在那里进行视图分配。
编辑#2
我做了一些实验,以下是我如何让它发挥作用:
创建一个独立的 xib 视图并在那里设计您的单元格。它必须是一个视图。你在这里所做的就是定义事情contentView
将会如何。
从 xib 加载所有视图。NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"EXCommonContentView" owner:nil options:nil];
创建自定义单元格的构造函数,如下所示:
-initWithNibContents:(NSArray*)nibContents {
self = [super init]
if(self) {
self.contentView = [nibContents objectAtIndex:0];
self.button = [self.contentView viewWithTag:BUTTON_TAG];
self.view = [self.contentView viewWithTag:VIEW_TAG];
}
}
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
1030 次 |
最近记录: |