我有一个视图类。在这个课程中我有表格视图。在我的模型课中,我制作Asynchrous ASIHTTPRequest。我希望当操作成功在表视图中重新加载数据时。这是做这件事的好方法。我考虑将一个UITableView属性添加到模型类并使用重新加载它。这是好方法吗?
答案 0 :(得分:2)
我认为您的模型应该通知已更新的te控制器(或使用KVO的其他方式)。然后控制器应该通知视图重新加载。
答案 1 :(得分:2)
将模型发布通知发送至NSNotificationCenter,并在表格视图中注明此通知,并reloadData
收到通知。
在模型内部,发生变化时:
[[NSNotificationCenter defaultCenter] postNotificationName:@"uniqueNotificationName"
object:self];
在表视图控制器内,注册通知,例如在viewDidAppear:
中[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(methodToCall:)
name:@"uniqueNotificationName"
object:nil];
并实现methodToCall:
- (void)methodToCall:(NSNotification *)notification {
[self.tableView reloadData];
}
完成表格视图后,例如在viewWillDisappear中:您需要取消注册通知:
[[NSNotificationCenter defaultCenter] removeObserver:self];
答案 2 :(得分:1)
如果要重新加载表格视图,可以使用以下方法之一:
如果您要重新加载所有显示的单元格,则只需拨打[tableView reloadData];
即可。请注意,只会重新加载显示的单元格。因此,如果您有10000个单元格,并且只显示了10个单元格,那么只有 10 单元格将被调用方法cellForRowAtIndexPath:
。
如果要重新加载特定单元格,则应调用以下UITableView
:- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
方法,并在第一个操作数列表中提供重新加载。
如果要重新加载UITableView
的整个部分(或部分数量),则应调用- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation
并在第一个操作数列表中提供重新加载。
希望,它会帮助您选择合适的变体。
答案 3 :(得分:1)
使用synchronous和gcd加载数据。 当接收数据时在主队列上调用[self reload]