Вопрос

Есть идея решить эту проблему?

Это правильный и неправильный путь уважительно:
alt text alt text

Это рабочий код:

- (UITableViewCell *)[...] cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    @try {
        newsRow = ((NewsRowController *)[tableView dequeueReusableCellWithIdentifier:@"cell"]);
        if (newsRow == nil) {
            if ( [[Device GetModel] isEqualToString:@"iPad Simulator"] || 
                 [[Device GetModel] isEqualToString:@"iPad"])
                [[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil];
            else [[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil];

            if ([tableArray count] > 0)
                [newsRow setData:[tableArray objectAtIndex:indexPath.row]];
        }       
    }
    @catch (NSException * e) {
        NSLog(@"a!!!!!");
    }
    return newsRow;
}

... но потому что на моем устройстве 3G это медленно Когда я прокручиваю стол вверх/вниз Я изменил код таким образом, вставил устройства проверить in viewdidload и передавать его в cellForRowAtIndexPath:

NSArray *cRow;
@property (nonatomic, retain) NSArray *cRow;
[...]
@syntetize cRow;

- (void)viewDidLoad {
[...]
    if ( [[Device GetModel] isEqualToString:@"iPad Simulator"] 
        || 
        [[Device GetModel] isEqualToString:@"iPad"])
        cRow  = [[[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil] retain];
        else cRow = [[[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil] retain];
[...]
}

- (UITableViewCell *)[...] cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    @try {
        newsRow = ((NewsRowController *)[tableView dequeueReusableCellWithIdentifier:@"cell"]);
        if (newsRow == nil) {

            //
            // ADDED CODE.
            //
            newsRow = [cRow objectAtIndex:0];    
            //

            if ([tableArray count] > 0)
                [newsRow setData:[tableArray objectAtIndex:indexPath.row]];
        }       
    }
    @catch (NSException * e) {
        NSLog(@"a!!!!!");
    }
    return newsRow;
}

Теперь таблица показывает мне только ряд. Если я прокручиваю, изменение строки, но показывает только один ряд ...
alt text
В чем проблема?

Есть помогает?

Благодарность,
А

Это было полезно?

Решение

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

Если вы можете позвонить в GetModel - это то, что замедляется, вы можете назвать это в ViewDidload и сохранить его для использования позже.

Скорее всего, ваша таблица не прокручивается плавно из -за количества видов, которые вы рисуете в каждой ячейке. Если ваш фон всегда будет твердым цветом, вы должны убедиться, что все виды, которые вы добавляете в ячейку или непрозрачный. Если вам нужно изображение или градиент, вам следует посмотреть на рисование ячейки в одном представлении. У Apple хороший пример того, как это сделать здесь: TableViewSuite. Анкет В частности, проверьте файл TimezoneView.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top