0

我正在阅读关于设置 UITableViewCell 的自定义子类的苹果文档 - Docs

在这个例子中,我需要设置一个没有 NIB/storyboard 文件的自定义单元。苹果文档提供了一个使用预定义样式并对其进行配置但不创建完全自定义布局的示例。

  1. 应该如何调用单元格.. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

我希望有一个完全自定义的布局,这是正确的吗?由于单元被称为 initWithStyle ...?

MESLeftMenuCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if(cell == nil)  {
    cell = [[MESLeftMenuCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
  1. 在自定义单元子类中,我应该如何/在哪里实现 contentView 中的视图设置?init 调用了哪个方法,会是上面的 initWithStyle 吗?如果是这样,我可以只在那里创建一次电池插座吗?

然后在cellForRowAtIndexPath我可以访问网点,即 cell.MainLabel.text ... 吗?

4

2 回答 2

1

这就是我在他们的自定义类中设置我的集合视图单元格的方式。我知道您正在使用 tableview 但这让我有一段时间了,所以决定在这里添加。希望它可以帮助你。

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    [self commonInit];
}
return self;
}

- (id)initWithCoder:(NSCoder *)encoder
{
    self = [super initWithCoder:encoder];
    if (self) {
        [self commonInit];
    }
    return self;
}

- (void)commonInit
{
    // set up your instance
}

要访问该单元的插座,我只需将插座添加到自定义类的头文件中,您就可以轻松访问它们。

于 2013-09-27T22:04:27.143 回答
0

从 iOS 6 开始,您不再需要检查出列单元格是否为 nil。

你会做如下:

在包含表视图的视图控制器的 viewDidLoad 方法中,您可以说

[self.tableView registerClass:[MyCellClass class] forCellReuseIdentifier:MyCellIdentifier];

这会导致您的 dequeueReusablecellWithIdentifier 调用永远不会返回 nil。本质上,在后台调用了initWithStyle。因此,您将在覆盖该功能时设置您的东西。

于 2013-09-27T22:03:50.987 回答