如何为不同的 UITableView 部分使用不同的表格视图单元格类
Posted
技术标签:
【中文标题】如何为不同的 UITableView 部分使用不同的表格视图单元格类【英文标题】:How to use different table view cell class for different UITableView sections 【发布时间】:2015-02-08 13:55:10 【问题描述】:我能做到这一点吗?
if (indexpath.section == 0)
// Use Class 1
else if (indexpath.section == 1)
// Use Class 2
我试过了,但没用
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
// Return the number of sections.
return 2;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
// Return the number of rows in the section.
return 1;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.section == 0)
OneTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"One" forIndexPath:indexPath];
if( cell == nil)
cell = [[OneTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"One"];
cell.oneLabel.text = @"HAHAHA";
return cell;
else
TwoTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Two" forIndexPath:indexPath];
if( cell == nil)
cell = [[TwoTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Two"];
cell.twoLabel.text = @"HEHEHE";
return cell;
【问题讨论】:
详细解释什么不起作用。 您是否使用正确的标识符在UITableView
中注册了每个课程?
【参考方案1】:
根据您显示的代码,您的 oneLabel
和 twoLabel
永远不会被初始化。如果您想快速修复,可以将它们都替换为textLabel
。如下,
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
if (indexPath.section == 0)
OneTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"One" forIndexPath:indexPath];
if( cell == nil)
cell = [[OneTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"One"];
cell.textLabel.text = @"HAHAHA"; // Modified
return cell;
else
TwoTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Two" forIndexPath:indexPath];
if( cell == nil)
cell = [[TwoTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Two"];
cell.textLabel.text = @"HEHEHE"; // Modified
您将能够在表格视图中看到两个不同部分的不同文本。它们确实是不同的TableviewCell
类。
但是,如果您想为不同的UITableViewCell
使用不同的标签,那么您必须确保它们在某处被初始化。例如,您可以覆盖自定义表格视图单元格中的默认 UITableviewCell
初始化程序。例如,在您的OneTableViewCell.m
文件中,在@implementation
和@end
之间添加以下内容。在这种情况下,您可以在 UITableView
类中使用您的原始代码。
@implementation OneTableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style
reuseIdentifier:(NSString *)reuseIdentifier
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if ( self )
_oneLabel = [[UILabel alloc] init];
[self.view addSubView:self.oneLabel];
return self;
@end
【讨论】:
以上是关于如何为不同的 UITableView 部分使用不同的表格视图单元格类的主要内容,如果未能解决你的问题,请参考以下文章
如何为uiview的不同部分添加多个UITapGestureRecognizer?