2013-09-27 59 views
0

我读苹果文档一个UITableViewCell子类上设置的UITableViewCell的定制子类 - Docs设置在代码

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

  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. 在自定义单元格子如何/我应该在哪里执行的内容查看内意见的设置? 为init调用哪个方法,它是否像上面那样是initWithStyle?如果是这样,我可以简单地在那里创建一个细胞出口吗?

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

回答

0

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

你会做什么如下:

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

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

这将导致你的dequeueReusablecellWithIdentifier调用永远不会返回零。实质上,在后台调用initWithStyle。所以你可以在重写该函数时设置你的东西。

1

这就是我已经被证明在他们的自定义类中设置我的集合视图单元格。我知道你使用的是桌面视图,但是这让我想了一会儿,所以决定在这里添加。希望它可以帮助你。

- (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 
} 

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