gpt4 book ai didi

ios - 使用静态单元格对 Tableview 中的单元格进行子类化

转载 作者:行者123 更新时间:2023-11-29 10:40:15 25 4
gpt4 key购买 nike

我有一个 UITableViewController 在应用程序中包含静态单元格。有什么方法可以通过代码在表格 View 中使用默认单元格以及子类单元格吗?我的 tableview 有 8 行,其中 6 行想要在 tableview 中使用默认单元格。对于剩下的两个单元格,我想通过代码创建它。

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

MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCustomCell"];

if (cell == nil) {
cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"MyCustomCell"];
}

return cell;
}

并且在 MyCustomCell.m 中包含,

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
self.myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
self.myLabel.backgroundColor = [UIColor clearColor];
self.myLabel.font = [UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]];
self.myLabel.textAlignment = NSTextAlignmentCenter;
self.myLabel.text = @"Hi there";
[self.contentView addSubview:self.myLabel];
}
return self;
}

-tableView:CellForRowAtIndexPath: 方法有助于通过代码创建自定义单元格,但我不知道如何访问默认的单元格 如果可能的话,在这里。

最佳答案

正如@Sviatoslav Yakymiv 提到的,设计单元格的最简单方法是将 Storyboard与程序自定义混合:布局将在 Storyboard中完成,但内容将在 View Controller .m 中更改文件。这意味着您在 -initWithStyle: reuseIdentifier: 中的所有代码都可以在 IB 中设计。然后您可以在 IB 中创建 2 个不同的动态原型(prototype)。换句话说,您可以将自定义单元格与默认 UITableViewCell 混合使用。例如在 Interface Builder 中你有动态原型(prototype)单元:

  1. 带有 reuseIdentifier=@"Cell" 的默认 UITableViewCell。

  2. 使用 reuseIdentifier=@"MyCustomCell" 自定义单元格(您可以在右上角的 Indentity Inspector 中更改它)。

如果你这样做正确,你将不需要使用这 3 行登录:

    if (cell == nil) {
cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"MyCustomCell"];
}

那么你应该把你的函数改成:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row >= rowWhereCustomCellShouldShow && indexPath.section > yourSection) {
MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCustomCell"];
[cell customizeForData:data[indexPath.row];
return cell;
} else { // The apple default cell
UITableViewCell *cell2 = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
// Here you can customize your cell.
return cell2;
}
}

关于ios - 使用静态单元格对 Tableview 中的单元格进行子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24887866/

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