如何在运行时在UITableview中添加数据?

时间:2011-07-25 10:11:32

标签: iphone objective-c uitableview uiscrollview

当我们滚动到UITableView的最后一个单元格时,我想在UITableview中添加数据或单元格。换句话说,正如我们在许多iPhone应用程序中看到的那样,当我们到达UITableview的最后一个单元格时,在运行时会添加更多单元格。我想在我的项目中实现该功能。

当我们到达之前添加的最后一个单元格时,将更多单元格添加到UITableview。

请告诉我示例代码或任何教程。

5 个答案:

答案 0 :(得分:2)

我认为这里有2个问题。 一,如何检测tableVeiw的结尾?二,如何动态添加单元格? 第一个问题,我认为可以通过观察scrollView的内容偏移量或tableView单元格的当前indexPath来完成。可以通过以下UIScrollViewDelegate方法观察scrollView的内容偏移量。内容偏移量是scrollView的属性。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
   CGFloat currentOffset = scrollView.contentOffset;

   // Detect scrolling to bottom by this offset value.
   ....
}

单元格的索引可以通过UITableViewDataSource的方法决定。

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

UITableView的方法可能会使第二个问题不堪重负。

  • beginUpdates
  • endUpdates
  • insertRowsAtIndexPaths:withRowAnimation:
  • deleteRowsAtIndexPaths:withRowAnimation:
  • insertSections:withRowAnimation:
  • deleteSections:withRowAnimation:

我记得this official document中的示例代码将教授如何使用上述方法。它们不会重新加载所有单元格,但不小心操作会导致崩溃。

答案 1 :(得分:1)

如果您的数据存储在数组中,那么您肯定会有计数您想要多少个单元格。 使用以下代码获取帮助

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return [array count];}

我相信这会对你有所帮助。

答案 2 :(得分:0)

使用数组填充tableView(您应该这样做)。当委托方法cellForRowAtIndexPath询问您最后一个单元格时,请使用新的(更多)数据重新填充数组并生成[tableView reloadData]

答案 3 :(得分:0)

你只想在表格中添加数据?

然后,首先您可能需要再添加一个视图,模态视图。您应该在此视图中编写一些关于要添加的内容的规范。

接下来,您将消息发送到现有数据阵列(假设您使用数组)

[ExistingArrayData addObject:TemporalilyNewObject];

您可以使用NSSortDescriptor对数据进行排序。

NSSortDescriptor *nameSorter = [[NSSortDescriptor alloc] initWithKey:KEY_VALUE ascending:YES selector:@selector(caseInsensitiveCompare:)];
[ExistingArrayData sortUsingDescriptors:[NSArray arrayWithObject:nameSorter]];

在这种情况下,此方法按KEY_VALUE(升序)对数据进行排序。

最后,您需要在RootView的viewWillAppear方法中添加此代码。

[self.tableView reloadData];

此代码通知应用程序数据更改。

答案 4 :(得分:0)

    -(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

        int i=0;

        i=indexPath.row;

        int count=[urTablearray count];

        if (count == (++i)) {

                //do ur stuff here

                     here add object to urTablearray

                     [urTablearray addObject:@"vijay"];


        }


    }

注意:urTablearray是NSMutableArray类型而不是NSArray