UITableView选中标记&部分

时间:2011-03-12 00:55:50

标签: iphone xcode uitableview

我正在制作一个允许选择单元格的UITableView(比如语言`TableView \,但只有一个)但是复选标记附件不起作用。

if (tableView == self.numberTableView) {
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.text = [arryNumber objectAtIndex:indexPath.row];
    if ([cell.textLabel.text isEqualToString:@"0"])
    {
        if (inumberfont == 0) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            }else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }
    if ([cell.textLabel.text isEqualToString:@"1"])
    {
        if (inumberfont == 1) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            }else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }
    if ([cell.textLabel.text isEqualToString:@"2"])
    {
        if (inumberfont == 2) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            }else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }
    if ([cell.textLabel.text isEqualToString:@"3"])
    {
        if (inumberfont == 3) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            }else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }
    if ([cell.textLabel.text isEqualToString:@"4"])
    {
        if (inumberfont == 4) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            }else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

行是什么:

cell.text = [arryNumber objectAtIndex:indexPath.row];

什么是cell.text?你的意思是cell.textLabel.text

顺便说一句,我认为您可以通过执行以下操作来压缩代码:

if ([cell.textLabel.text intValue] == inumberfont) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}

你不需要所有8个if语句。

答案 1 :(得分:1)

我重写了你的代码。

if (tableView == self.numberTableView) {
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.text = [NSString stringWithFormat:@"%i", indexPath.row];
    if (inumberfont == indexPath.row) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
}

上面的代码与您的代码完全相同,但是,您的代码无效。在下面的代码中,我修复了我发现的错误。我还添加了一些丢失的代码。如果你之前有过,但没有包括它,那很好;我只是想确保它没有丢失。

if (tableView == self.numberTableView) {
    static NSString *CellIdentifier = @"NumberCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.textLabel.text = [NSString stringWithFormat:@"%i", indexPath.row];
    if (inumberfont == indexPath.row) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    return cell;
}

我不确定你的意思是“复选标记附件不起作用”,但尝试使用我的建议改进你的代码,如果它仍然不起作用,请发表评论我会看到我能做什么尽力帮助你。

编辑:找出问题所在。请尝试以下方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    inumberfont = indexPath.row;
    [tableView reloadData];
}