我想以编程方式创建自定义tableViewCell。 这就是我的工作:
创建tableViewCell子类并将其导入tableViewController
在tableViewController m:
中- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"StoreCell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
return cell;}
在CustomCell m:
中-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
NSLog(@"Hello!");
}
return self;
}
(很抱歉没有让代码突出显示工作原理)
我的问题是CustomCell没有初始化。 initWithStyle永远不会被触发。我遵循了几个教程,他们做了完全相同的事情,但成功了..
答案 0 :(得分:2)
对于iOS 6,dequeReusableCellWithIdentifier:forIndexPath:始终返回一个单元格,因此永远不会调用if-case。 如果具有该标识符的单元格不可用,则会自行初始化它。 尝试在UITableViewCell子类中实现initWithCoder:这就是在这种情况下调用的内容。
答案 1 :(得分:1)
在cellForRowAtIndexPath中试试这个
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"StoreCell";
CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
return cell;
}
答案 2 :(得分:-1)
我终于明白了。由于我在故事板中使用原型单元格,因此单元格未初始化。我将原型单元格设置为0并且它可以工作:)