在UITableView中重新加载部分

Rec*_*ner 10 objective-c uitableview ios

我正在编写一个应用程序,通知用户何时可以服用他/她的药物.页面顶部的标签显示日期,并且tableView在该特定日期需要填写医药名称和时间.现在根据当天要服用的药物数量来填充这些部分.因此,部分的数量随着时间的推移而动态变化; 计划在该特定日期服用一种药物.每当用户服用药物时,它就会作为变量存储在DB中,而变量"1"则保留在其中"0".

另外我知道我需要在那天重新加载特定药物的一部分.

现在问题是我如何实现这一目标?如何重新加载特定部分?

for(NSManagedObject *mo in secondEntityArray) {
    NSDate *temp1 = [mo valueForKey:@"date"];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSString * temp2 = [dateFormatter stringFromDate:temp1];
    NSDate *temp3 = [dateFormatter dateFromString:temp2];
    NSDate * temp4 = [dateFormatter dateFromString:_dateLabel.text];
    if([temp3 compare:temp4] == NSOrderedSame) {
        if([[mo valueForKey:@"isNotificationFired"] isEqualToString:@"1"] && [[mo valueForKey:@"repeatDays"] isEqualToString:@"Everyday"]) {
            //Reflect changes in tableView section
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*ick 65

斯威夫特3

NSIndexSet没什么特别的

tableView.reloadSections([1, 2, 3], with: .none)
Run Code Online (Sandbox Code Playgroud)

这只是一个阵列.疯.

  • 这是很好的解决方案 (4认同)

Nev*_*ess 8

UITableView支持重新加载数据的功能很少.请参阅重新加载 doc 的表视图部分.

  • reloadData
  • reloadRowsAtIndexPaths:withRowAnimation:
  • reloadSections:withRowAnimation:
  • reloadSectionIndexTitles

另外,请看这个类似的线程,它的一部分:

NSRange range = NSMakeRange(0, 1);
NSIndexSet *section = [NSIndexSet indexSetWithIndexesInRange:range];                                     
[self.tableView reloadSections:section withRowAnimation:UITableViewRowAnimationNone];
Run Code Online (Sandbox Code Playgroud)

此外,没有必要重新加载特定部分,您只需调整数据集并调用[tableView reoadData],它将仅加载可见单元格.doc的一部分:

调用此方法可重新加载用于构造表的所有数据,包括单元格,节页眉和页脚,索引数组等.为了提高效率,表视图仅重新显示可见的行.如果表因重新加载而缩小,它会调整偏移量.