是否可以在同一个xib中拥有多个自定义uitableviewCell?
我试图通过在同一个xib中组合不同的自定义单元格来保存XIB文件,然后让表格加载不同的单元格.
在IB中,我尝试将每个uiTableViewCell类设置为不同的自定义类.m/.h实现.这是我尝试过的:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"DevConfigCell";
DeviceInfoCell *cell = (DeviceInfoCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell~iphone" owner:self options:nil];
cell = ( DeviceInfoCell *)[nib objectAtIndex:0];
}
return cell;
}
Run Code Online (Sandbox Code Playgroud)
在另一个表中,我将重用nib,但我会这样做:
cell = ( SecondDeviceInfoCell *)[nib objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它总是加载第一个单元格.
这一切都有用吗?或者有办法吗?
谢谢
我正在尝试通过在同一 xib 中组合不同的自定义单元格来保存 XIB 文件
为什么?您可以创建的 .xib 文件数量没有限制。
然后让表从中加载不同的。
当您加载 .xib 时,将创建该文件包含的所有对象。如果您将 10 个自定义单元格放入一个 .xib 中,则加载该 .xib 将为这 10 个单元格中的每一个创建一个实例。这可能不是你想要的。将单元格保存在单独的 .xibs 中可能是一个更好的计划。
cell = ( SecondDeviceInfoCell *)[nib objectAtIndex:0];
您似乎对铸造的作用感到困惑。当您从一种类型转换为另一种类型时,您并没有以某种方式选择不同的对象。如果数组具有相同的内容,则返回的对象[nib objectAtIndex:0]始终是相同的nib。类型转换只是改变编译器与值关联的类型;在这种情况下,它会更改指针的类型。
IBOutletCollection您可以在视图控制器中创建一个,然后将几个不同的自定义单元连接到该插座集合;这将为您提供一个单元格数组,您可以使用 来选择它们objectAtIndex:。但同样,这确实不是一个好主意,因为每次您只需要一个单元格时,您都会创建文件中的所有单元格。
| 归档时间: |
|
| 查看次数: |
4626 次 |
| 最近记录: |