在代码中设置UITableViewCell子类

时间:2013-09-27 21:54:51

标签: ios ios6 uitableview

我正在阅读有关设置UITableViewCell的自定义子类的Apple文档 - Docs

在此示例中,我需要设置一个没有NIB / storyboard文件的自定义单元格。 apple docs提供了一个使用预定义样式并配置但不创建完全自定义布局的示例。

  1. 如何调用单元格.. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  2. 我希望有一个完全自定义的布局,这是正确的吗?由于单元格被称为initWithStyle ......?

    MESLeftMenuCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    
    if(cell == nil)  {
        cell = [[MESLeftMenuCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    
    1. 在自定义单元子类中,应该如何/在哪里实现contentView中视图的设置? 为init调用哪个方法,如上所述是initWithStyle吗?如果是这样,我可以只在那里创建一次单元插座吗?
    2. 然后在cellForRowAtIndexPath我可以访问出口,即cell.MainLabel.text ...?

2 个答案:

答案 0 :(得分:1)

这就是我在自定义类中设置Collection View Cells的方法。我知道你正在使用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
}

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

答案 1 :(得分:0)

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

你会做的如下:

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

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

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