我有点困惑如何使用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/