带有复选标记代码的错误

时间:2012-07-17 19:19:36

标签: objective-c ios uitableview uikit

在我的cellForRow代码中,我有以下内容,并且收到错误消息,说明没有返回任何内容。我做错了什么?感谢。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    if([self.checkedIndexPath isEqual:indexPath]) 
    { 
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } 
    else
    { 
        cell.accessoryType = UITableViewCellAccessoryNone;
    } 
    return cell;
}

2 个答案:

答案 0 :(得分:3)

这是一个无限循环:UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];

这应该是:

static NSString *reuseIdentifier = @"some_identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
if(cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier] autorelease]
}

答案 1 :(得分:0)

您的cellForRowAtIndexPath看起来像这样(对于最基本的表格视图)

- (UITableViewCell *) tableView :(UITableView *) tableView cellForRowAtIndexPath :(NSIndexPath *) indexPath
{
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier ";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                       reuseIdentifier:SimpleTableIdentifier] autorelease];
    }

    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listData objectAtIndex :row];
    cell.textLabel.font = [UIFont boldSystemFontOfSize:50];

    return cell;
}