已解決:請參閱問題底部。UITableView不使用程序定製UITableViewCell
我爲我的程序定義的UITableView使用自定義的UITableViewCell。自定義的UITableViewCell目前有一個紅色的背景,沒有別的。下面是從UIViewController的的cellForRowAtIndexPath的片段:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CCTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CELL_ID];
if (cell == nil)
{
cell = [self getNewCell];
}
…
return cell;
}
- (CCTableViewCell *) getNewCell
{
return [CCTableViewCell newCell];
}
相關代碼CCTableViewCell:
在.H:
#define CELL_ID @"CCTVCell"
在.M
:
+ (CCTableViewCell *) newCell
{
CCTableViewCell * cell = [[CCTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CELL_ID];
return cell;
}
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self initCell];
}
return self;
}
- (CCTableViewCell *) init
{
self = [super init];
if (self) {
[self initCell];
}
return self;
}
- (void) initCell
{
[self setBackgroundColor:[UIColor redColor]];
}
的問題在於自定義的UITableViewCell沒有被使用(不顯示或不被創建)在表中。相反,正在使用一個標準單元。
我看了很多其他問題,所有問題都通過我已經實施的步驟解決。
注意:在這個部分的分離是因爲這將是一個具有自己的CCTableViewCell實現的特定UITableViewController的父類。這部分具有繼承的通用代碼。
編輯:CCTableViewCell代碼添加
編輯++:
這是我的UIViewController的viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(50, 100, 220, 300)];
tableView.delegate = self;
tableView.dataSource = self;
tableView.allowsMultipleSelection = NO;
[tableView registerClass:[CCTableViewCell class] forCellReuseIdentifier:CELL_ID];
[tableView reloadData];
[self.view addSubview:tableView];
}
編輯++:該TableViewController是真正的UIViewController與委託和數據源建立
編輯:解決: 所以,事實證明,覆蓋willDisplayCell委託窩RKS。有關信息,請參閱下面的鏈接。
How to customize the background color of a UITableViewCell?
從本質上講,的cellForRowAtIndexPath似乎只能做的事情創建後的表。 willDisplayCell在單元顯示時工作。我的猜測是該項目在viewDidLoad中創建表格時創建了空白單元格。
添加'CCTableViewCell'的代碼 – Wain
嘗試替換此行: CCTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CELL_ID]; 作者: CCTableViewCell * cell =(CCTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CELL_ID]; 我不知道如果多數民衆贊成的理由...如果你嘗試..好運 – DrDev
我編輯我的評論 – DrDev