1

我有一个UITableView从远程提要加载某些数据的设备,并且我想在从提要加载的所有行的开头手动在表格顶部添加一行。

因此,例如,如果从提要中我将有一个包含行的表

///////////////////////////////////

1(从 UITableView 数据源加载)

///////////////////////////////////

2(从 UITableView 数据源加载)

///////////////////////////////////

3(从 UITableView 数据源加载)

///////////////////////////////////


我想在上面手动添加一行,所以我会:


///////////////////////////////////

0(手动添加)

///////////////////////////////////

1(从 UITableView 数据源加载)

///////////////////////////////////

2(从 UITableView 数据源加载)

///////////////////////////////////

3(从 UITableView 数据源加载)

///////////////////////////////////

这可能吗?如果不可能,有没有其他方法可以做到这一点?就像有两个UITableView并将它们放在一起或类似的东西。

提前非常感谢!

4

5 回答 5

2

是的,这是可能的。
在要添加行的函数中,执行:

NSMutableArray *indexPathsToInsert = [[NSMutableArray alloc] init];
[indexPathsToInsert addObject:[NSIndexPath indexPathForRow:0 inSection:0]];

[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:indexPathsToInsert withRowAnimation:UITableViewRowAnimationTop];
[self.tableView endUpdates];

您可以根据您想要的效果更改行插入动画。
/!\ 你的数据源和你的函数tableView:cellForRowAtIndexPath:必须和你想显示的一致

于 2013-10-25T08:55:24.357 回答
1

将新元素添加到您拥有数据的数组中,例如:

//This is your data:
NSMutableArray *myData;

//Add new row at the beggining:
[myData insertObject:newData atIndex:0];

//Reload your table view
[self.myTableView reloadData];
于 2013-10-25T08:58:32.307 回答
0

如果它是您要添加的静态第一行,我建议您使用 UITableViewHeader 而不是 UITableViewCell 来显示它。如果您确实希望它成为销售,为什么不添加另一个部分?第一部分将仅包含这个单元格,第二部分将包含显示您从提要中获得的数据的所有单元格。您可以跳过标题视图,因此您不会注意到您有 2 个部分而不是 1 个部分。另一种方法当然是将要在第一个单元格中显示的数据添加到数据源中,并且只有一个部分,但我更喜欢第一种方法,因为那里的代码和逻辑更清晰

于 2013-10-25T08:55:32.540 回答
0

您必须使用数组在表格视图中从远程加载数据。只需在这些数组的开头推送一个元素(第一行中需要的任何数据)。

在数组的开头插入一个元素:

NSMutableArray* array;
[array insertObject:dataInFirstRow atIndex:0];
于 2013-10-25T08:55:36.077 回答
0

它可能对你有用..

1)首先将该新元素插入您的数据源数组。

2)通过获取可见行indexPath

NSArray *visibleIndexes = [self.tableview indexPathsForVisibleRows];

3)然后重新加载所有可见的行没有动画:

[self.tableview reloadRowsAtIndexPaths:visibleIndexes withRowAnimation:UITableViewRowAnimationNone]
于 2013-10-25T08:57:47.610 回答