UITableView проблема с изображением ячейки - PullRequest
1 голос
/ 24 июня 2011

Я пытаюсь импортировать изображение только в ячейку № 1 и № 2! , но я результат мой образ покажет в последней ячейке! Я не знаю почему !! вот картинка, которая показывает мою ситуацию:

enter image description here

    // Configure the cell.
    NSUInteger row = [indexPath row]; 
    cell.textLabel.text = [titles objectAtIndex:row];
    cell.detailTextLabel.text = [subtitle objectAtIndex:row]; 


    switch (indexPath.row) {
        case 0:
            cell.imageView.image = [UIImage imageNamed:@"new.png"];
            break;

        case 1:
            cell.imageView.image = [UIImage imageNamed:@"new.png"];
            break;
    }



    return cell;

}

Ответы [ 5 ]

4 голосов
/ 24 июня 2011

Либо в вашем tableView:cellForRowAtIndexPath: установите для изображения imageView значение nil перед условной проверкой, чтобы установить новое изображение, либо внедрите prepareForReuse для своего подкласса ячейки и установите для всех значений представлений ячейки значение nil.

Это гарантирует, что повторно использованные ячейки будут «чистыми», прежде чем они будут выведены на экран.

В качестве альтернативы вы можете отредактировать ваш switch, чтобы он выглядел так:

switch (indexPath.row) {
    case 0:
        cell.imageView.image = [UIImage imageNamed:@"new.png"];
        break;

    case 1:
        cell.imageView.image = [UIImage imageNamed:@"new.png"];
        break;
    default:
        cell.imageView.image = nil;
        break;
}
2 голосов
/ 24 июня 2011

Возможно, вы использовали "static NSString * reuseIdentifier = @" Identifier "", это означает, что этот reuseIdentifier будет считать все ячейки одинаковыми. Только видимые ячейки будут отличаться, поэтому, например, если на устройстве есть 5 видимых ячеек, то для ячейки будет выделено только 5 новых ячеек, а затем при прокрутке вниз или вверх эти 5 ячеек будут повторно использованы, если вы статически указали reuseIdentifier .

Я бы предложил сделать ячейку уникально идентифицируемой с помощью reuseIdentifier, замените приведенную выше строку на «NSString * reuseIdentifier = [NSString stringWithFormat: @" cell% d ", indexPath.row]" Это решит проблему.

Надеюсь, это поможет.

2 голосов
/ 24 июня 2011

Первое, что заставляет меня задуматься, это то, что первая ячейка каким-то образом перерабатывается и используется для последней ячейки.Вы можете попытаться установить представление изображения на ноль для каждой ячейки и установить его только в первых двух ячейках.Должно быть что-то вроде этого:

cell.imageView.image = nil;

Надеюсь, это поможет!; D

1 голос
/ 24 июня 2011

попробуйте это может помочь вам

    case 0:
        cell.imageView.image = [UIImage imageNamed:@"new.png"];
        break;

    case 1:
        cell.imageView.image = [UIImage imageNamed:@"new.png"];
        break;
     default
        cell.imageView.image=nil;
1 голос
/ 24 июня 2011

Ваши ячейки повторно используются в табличном представлении для экономии памяти. Вы должны сказать ячейке не использовать изображение на каждой другой ячейке. Измените команду switch следующим образом:

 switch (indexPath.row) {
    case 0:
        cell.imageView.image = [UIImage imageNamed:@"new.png"];
        break;

    case 1:
        cell.imageView.image = [UIImage imageNamed:@"new.png"];
        break;

    default:
        cell.imageView.image = nil;
        break;
}

Сандро Мейер

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