Вопрос

В моем приложении я буду отображать только одну строку на UITableView изначально.Я хочу увеличить количество строк, когда пользователь загружает предыдущую строку с данными (здесь uiimage).Поскольку сейчас я возвращаю значение 1, в numberOfRowsInSection: метод, так как я не знаю, как реализовать его требуемым образом.Пожалуйста помоги.

Мой cellForRowAtIndexPath: метод

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     static NSString *CustomCellIdentifier = @"CustomCellIdentifier";

     CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];
     if (cell == nil) {
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CustomCellIdentifier ] autorelease];

         NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];      
         for (id currentObject in nib){
             if ([currentObject isKindOfClass:[CustomCell class]]){
                 cell = (CustomCell *)currentObject;
                 cell.viewController = self;
                 break;
             }
         }          
     }
     if (j<15){
                 cell.imageView.image = nil;
         if (count!=0)
         {
             @try{
                NSInteger row = [indexPath row];
                 cell.imageView.image = [array objectAtIndex:row];
                  }
             @catch (NSException* ex) {
                 NSLog(@"doSomethingFancy failed: %@",ex);
             }
         }
     }
     cell.showsReorderControl = YES;
      return cell;
     [array release];
 }

что если условие и счетчик - это не что иное, как проверка правильности функционирования изменяемого массива, «массива».

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

Решение

Вам следует прочитать эту документацию: http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/TableView_iPhone/Introduction/Introduction.html

Также обратите внимание на соответствующие образцы.

Примечание:в вашем коде [выпуск массива] не будет вызываться, поскольку перед ним есть оператор возврата.

Другие советы

Когда вы достигнете cellForRowAtIndexPath в определенный indexPath, это означает, что строка отображается.Если вы дойдете до последней строки, вы можете вставить новую строку в таблицу.Для этого вам просто нужно увеличить количество, возвращаемое функцией tableView:numberOfRowsInSection функция.

Я предполагаю, что твой numberOfRowsInSection функция будет выглядеть примерно так:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return section==0 ? [array count] : 0;
}

Итак, внутри cellForRowAtIndexPath добавьте следующий код:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
     ...

     if([indexPath row]==[array count]-1) {
         [array addObject:(NEXT_IMAGE)];
     }
     return cell;
 }

Также необходимо обновить таблицу.Один из способов — просто вызвать reloadData в вашем UITableView, но предпочтительный способ — вызвать BeginUpdates/insertRowsAtIndexPaths/endUpdates в таблице, чтобы вы могли показать красивую анимацию вставляемой строки.

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