我跟着这种折磨:
http://www.raywenderlich.com/32283/core-graphics-tutorial-lines-rectangles-and-gradients
它涵盖了动态表格单元的自定义,我需要使用静态表格单元格。
我已经为每个单元格提供了标识符“Cell”,正如他在教程中所做的那样,然后我将子视图控制器子类化并实现了这个:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CellIdentifier = @"Cell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// START NEW
if (![cell.backgroundView isKindOfClass:[CostumCellBackground class]]) {
cell.backgroundView = [[CostumCellBackground alloc] init];
}
if (![cell.selectedBackgroundView isKindOfClass:[CostumCellBackground class]]) {
cell.selectedBackgroundView = [[CostumCellBackground alloc] init];
}
// END NEW
cell.textLabel.backgroundColor = [UIColor clearColor]; // NEW
return cell;
}
CostumCellBackground绘制矩形。
我收到错误“UITableView dataSource必须从tableView返回一个单元格:cellForRowAtIndexPath:
据我所知,UITableView为故事板中的每个Cell循环,并且它应该返回单元格。
那么,这里有什么,为什么细胞会返回零,或根本不返回?
唯一的区别是它们是静态表,而不是原型。
答案 0 :(得分:1)
如果您使用的是Storyboards和iOS6,并且您的视图控制器是UITableViewController,那么如果您的故事板中存在您的单元格标识符,您将始终获得一个单元格。检查cel == nil是一种旧方法。
您确定故事板中有一个带有“Cell”标识符的自定义单元格吗?
另外,请使用:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
如果你查看UITableView.h文件,你会发现:
// newer dequeue method guarantees a cell is returned and resized properly, assuming identifier is registered
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0);
答案 1 :(得分:0)
你在哪里创建你的细胞?
你应该添加:
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
此类代码(或其他初始化程序):
if (cell == nil) {
cell = [[UITableViewCell alloc] init];
}
答案 2 :(得分:-1)
在方法的开头尝试:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CellIdentifier = @"Cell";
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil){
cell = [[UITableViewCell alloc]
initWithStyle: UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier
];
}