gpt4 book ai didi

ios - 如何创建具有多种单元格类型的分组 TableView ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:49 24 4
gpt4 key购买 nike

我没有使用 Storyboard,它是 iOS 6。

当所有单元格都是相同类型时,我知道该怎么做,但我需要一个包含多种类型单元格的分组 TableView 。举个例子,假设第一个单元格需要是 UITableViewCellStyleValue1,第二个单元格需要是 UITableViewCellStyleSubtitle,第三个单元格是自定义单元格(具有 xib 的 UITableViewCell 子类,因此它可以与 registerNib:forCellReuseIdentifier: 一起使用。

大多数情况下,我不确定构建 tableView:cellForRowAtIndexPath: 的最佳方式。但我不确定是否应该注册自定义单元格或所有单元格。

执行此操作的最佳方法是什么?

最佳答案

您走在正确的道路上。由于您的自定义单元格正在其他地方使用,所以 xib 是加载它的好地方。至于实现,你可以做这样的事情。

假设您的 tableview 是“静态的”并且具有三个单元格,您可以在 viewDidLoad 中注册您的自定义 Nib :

- (void)viewDidLoad
{
[super viewDidLoad];

UINib *customCellNib = [UINib nibWithNibName:@"CustomCell" bundle:nil];
[self.tableView registerNib:customCellNib forCellReuseIdentifier:@"CustomIdentifier"]
}

然后在 cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = nil;

if(indexPath.row == 0) {

cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier1"];

if(cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:@"CellIdentifier1"];
}
}
/* Cell 2 ommited for brevity */
else if(indexPath.row == 2) {

//Just to demonstrate the tableview is returning the correct type of cell from the XIB
CustomCell *customCell = [tableView dequeueReusableCellWithIdentifier:@"CustomIdentifier"];
cell = customCell;
}

[self configureCell:cell atIndexPath:indexPath];

return cell;
}

最后在 Xib 的 IB 中,为单元格设置正确的 Identifier

Xib - Cell in IB

更新

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {

if(indexPath.row == 0) {
cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row];
}
else {

//custom cell here
//cell.textfield.text = @"blah blah";
}
}

配置单元格方法在某种程度上是主要使用 NSFetchedResultsController 放置的表格 View 单元格的约定。 (及其使用的 delegate)

这只是一种用适当的内容重置重复使用的单元格的便捷方法,并使 cellForRowAtIndexPath: 更易于阅读。我什至制作了多个版本的 configureCell,例如 configureCustomCell1:atIndexPath 以进一步提高可读性。

希望这对您有所帮助!

关于ios - 如何创建具有多种单元格类型的分组 TableView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com