向UITableViewCell添加新行

时间:2009-12-09 04:39:27

标签: iphone uitableview insert rows

在我的应用程序中,我最初只会在UITableView上显示一行。我想在用户使用数据加载前一行时增加行数(这里是一个uiimage)。现在我在numberOfRowsInSection:方法中返回值1,因为我不知道如何以所需的方式实现它。请帮忙。

我的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];
 }

如果条件和计数只是用于检查可变数组的正确功能,那就是“数组”。

2 个答案:

答案 0 :(得分:1)

您应该阅读此文档:http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/TableView_iPhone/Introduction/Introduction.html

同时查看相关样本。

注意:在你的代码中,[array release]不会被调用,因为你之前有一个return语句。

答案 1 :(得分:0)

当您到达某个cellForRowAtIndexPath的{​​{1}}时,表示正在显示该行。如果到达最后一行,则可以在表中插入新行。要做到这一点,您只需要增加indexPath函数返回的计数。

我猜你的tableView:numberOfRowsInSection函数看起来像这样:

numberOfRowsInSection

基本上,在cellForRowAtIndexPath中,添加以下代码:

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

您还需要刷新表格。一种方法是在UITableView上调用reloadData,但首选方法是在表上调用beginUpdates / insertRowsAtIndexPaths / endUpdates,以便显示正在插入的行的漂亮动画。