如何重新加载tableview特定部分

时间:2013-05-01 07:31:23

标签: ios objective-c uitableview

我的tableview中有56个部分,我正在存储当前在名为" activeTimeSlot"的整数变量中选择的部分编号。如何使用以下方法重新加载当前选定的部分。我这样做是为了

 [self.tblView reloadSections:[NSIndexSet indexSetWithIndex:activeTimeSlot] withRowAnimation:UITableViewRowAnimationAutomatic];

但我观察到这样做是为所有部分调用tableview的下面数据源方法,即重新加载所有部分。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

我不知道如何使用NSIndexSet以及如何使用NSIndexSet重新加载超过1个部分。

2 个答案:

答案 0 :(得分:8)

如果您想更新多个部分,那么您可以这样做。

NSMutableIndexSet *indetsetToUpdate = [[NSMutableIndexSet alloc]init];

[indetsetToUpdate addIndex:previousSection]; // [indetsetToUpdate addIndex:<#(NSUInteger)#>] 
// You can add multiple indexes(sections) here.

[detailTableView reloadSections:indetsetToUpdate withRowAnimation:UITableViewRowAnimationFade];

这用于更新多个部分,它对我来说很好。

希望它会对你有所帮助。

答案 1 :(得分:3)

正如我从您的评论中看到的那样,您正在检查方法的调用

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

弄清楚它正在重新加载每个部分。但是由于内部原因,可能会针对所有部分调用该方法。如果您尝试记录哪些行实际是真实的,您会发现一切都很好。放一个

NSLog(@"Section %d", indexPath.section);

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

并看到只重新加载所选部分的行。

PS:忘了说:你的解决方案已经正确了。