我有点困惑如何使用IndexPath将行添加到TableView中。
首先我初始化:

    tableView = [[UITableView alloc] initWithFrame:self.view.bounds];

    //rows code here

    [self.view addSubview:tableView];


现在,在这两个之间,我想在表视图中添加一些行。我有一个NSArray,其中NSStrings包含元素名称。

所以我试试这个:

[[self tableView] beginUpdates];
[[self tableView] insertRowsAtIndexPaths:(NSArray *)myNames withRowAnimation:UITableViewRowAnimationNone];
[[self tableView] endUpdates];


然后,我读到我应该首先以某种方式将其添加到UITableViewDataSource中。所以我宣布错了吗?我问是因为我宁愿避免不必要的传递数据。

最佳答案

表格视图以及MVC中的大多数视图的想法是,它们反映了模型的状态。因此,是的,正如您建议的那样,让您的数据源维护一个数组:

@property (strong, nonatomic) NSMutableArray *array;


对数组进行更改:

[self.array addObject:@"New Object"];


记录哪些行已更改...

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[self.array count]-1 inSection:0];
NSArray *myNames = [NSArray arrayWithObject:indexPath];


然后使用您发布的代码让表格视图知道该模型是不同的...

[[self tableView] beginUpdates];
[[self tableView] insertRowsAtIndexPaths:myNames withRowAnimation:UITableViewRowAnimationNone];
[[self tableView] endUpdates];

关于iphone - NSIndexPath从其他类到UITableView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10229832/

10-10 20:38