UITableView галочка и разделы - PullRequest
2 голосов
/ 12 марта 2011

Я делаю 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 ]

1 голос
/ 12 марта 2011

Я переписал твой код.

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];
}
1 голос
/ 12 марта 2011

Какая линия:

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, если только заявления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...