Tableview样式单元格依赖于字典中的值

我正在拼命想弄清楚如何设置Tableview样式单元格,这取决于字典中的值。 字典是一个SQLite行,并且我设置了一个列来设置要使用的单元格(Type列)。然后,它应该告诉cellForRowAtIndexPath使用哪种单元格样式。 在我看来,这段代码应该没有问题,但我仍然收到以下错误:

由于未捕获的异常而终止应用程序   'NSInternalInconsistencyException',原因:'UITableView dataSource   必须从tableView:cellForRowAtIndexPath:'

返回一个单元格

任何帮助将是伟大的! 非常感谢, 安德鲁

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
dictionary = [tableDataSource objectAtIndex:indexPath.row];

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    if ([dictionary objectForKey:@"Type"] == @"1") {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;
        cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
        cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.detailTextLabel.numberOfLines = 0;
        cell.detailTextLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
    }
    else if ([dictionary objectForKey:@"Type"] == @"0") {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;
        cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:12.0];
    }

}
// Configure the cell...
cell.textLabel.text = [dictionary objectForKey:@"Title"];
cell.detailTextLabel.text = [dictionary objectForKey:@"Right_Info"];
return cell; }
0
额外 编辑
意见: 1

1 答案

为了比较两个 NSString 对象,您应该使用 isEqualToString:方法。用 == 运算符来比较两个指针。

此外, dequeueReusableCellWithIdentifier:已经返回 UITableViewCell 的一个实例,因此您不应该再次尝试分配一个实例。

如果您愿意,请查看表格查看编程指南。它不会受伤。

0
额外