ios tableViewCell.xib文件生成多个单元格
Posted
技术标签:
【中文标题】ios tableViewCell.xib文件生成多个单元格【英文标题】:ios tableViewCell.xib file generate more than one cell 【发布时间】:2015-08-26 08:31:35 【问题描述】:- (void)viewDidLoad
[super viewDidLoad];
[self.tableView registerNib:[UINib nibWithNibName:@"FriendTableViewCell" bundle:nil] forCellReuseIdentifier:@"FIDCELL"];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
FriendTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FIDCELL"];
return cell;
此代码块有效,但是当我在 FriendTableViewCell.xib 中添加新单元格时实际上我无法调用新单元格。我怎么能称这个单元格或者这是可能的?如果这个问题不清楚,我可以添加图片...
**
我尝试从同一个 .xib 调用不同的单元格
**
错误:
【问题讨论】:
只要您有额外的数据要添加到 TableView 中的更多单元格,您的代码就应该生成多个单元格。如果您从视图控制器中发布更多代码会很有帮助。 请添加图片以澄清您的问题,您是否尝试从同一个 .xib 中调用不同的单元格? 新单元的 ID 不是“FIDCELL”吗? @AbdAl-rhmanTaherBadary 是的,我尝试从同一个 .xib 调用不同的单元格这可能吗?如果可能的话,我该怎么做? 我添加了图片,请检查 【参考方案1】:我找到了解决方案,我生成新的 .xib 并在页面加载它们时调用
[self.tableView registerNib:[UINib nibWithNibName:@"FriendTableViewCell" bundle:nil] forCellReuseIdentifier:@"FIDCELL"];
[self.tableView registerNib:[UINib nibWithNibName:@"Cell2" bundle:nil] forCellReuseIdentifier:@"FIDCELL2"];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
NSString *cellID = @"";
if (indexPath.row % 2 == 0)
cellID = @"FIDCELL";
else
cellID = @"FIDCELL2";
FriendTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
// Configure the cell...
cell.nameLabel.text = self.namesArray[indexPath.row];
cell.photoImageView.image = [UIImage imageNamed:self.photoNameArray[indexPath.row]];
return cell;
这个代码部分完全可以工作。
【讨论】:
【参考方案2】:好吧,首先,每个单元格都应该有它的唯一标识符,所以如果第一个单元格有一个名为“FIDCELL”的标识符,那么第二个单元格应该有另一个名为“FIDCELL2”的标识符,然后从 viewDidLoad 中删除以下行:
[self.tableView registerNib:[UINib nibWithNibName:@"FriendTableViewCell" bundle:nil] forCellReuseIdentifier:@"FIDCELL"];
并将其添加到 cellForRowAtIndexPath
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
CustomTableViewCell * cell ;
if(condtion1)
cell = [tableView dequeueReusableCellWithIdentifier:firstCellIdentfier];
else if(condtion2)
cell = [tableView dequeueReusableCellWithIdentifier:secondCellIdentfier];
if (cell == nil)
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:yourNibName owner:self options:nil];
if(condtion1)
//0 is the index of the first cell in the nib
cell = [nib objectAtIndex:0];
else if(condtion2)
//1 is the index of the second cell in the nib .
cell = [nib objectAtIndex:1] ;
//do other work
return cell ;
其中 condtion1 和 condtion2 是决定选择哪个单元格的条件。
【讨论】:
以上是关于ios tableViewCell.xib文件生成多个单元格的主要内容,如果未能解决你的问题,请参考以下文章
TableViewCell.xib 没有出现在 tableview 上
将多个自定义 TableViewCell Xib 索引到 TableView
在行选择Swift 3上设置TableViewCell标签颜色