如何指定在通知中调用someController.tableView reloadData?
重新加载包装器的实现是:
- (void) reloadTableAsContentsHasChanged
{
[self.tableView reloadData];
}
并且对Notofication中心的AddObserver参数的调用现在实现为:
addObserver: self selector: @selector( reloadTableAsContentsHasChanged )
它可以正常工作但不需要包装器。我尝试了几种符号,但我无法做到。应该可以在没有包装器的情况下传递self.tableView的reloadData方法。
答案 0 :(得分:1)
这是NSNotificationCenter
基于块的API的工作。
假设self
将成为发布此通知的对象......
id observer = [[NSNotificationCenter defaultCenter]
addObserverForName:@"SomeNotificationName"
object:self
queue:nil
usingBlock: ^(NSNotification *note){[self.tableView reloadData];}
并且当您不再需要收听此通知时,请记得取消注册并释放observer
。
答案 1 :(得分:0)
您可以像这样添加观察者:
[[NSNotificationCenter defaultCenter] addObserver: someController.tableView selector: @selector(reloadData) name: @"someName" object: self];
但你为什么不这样做呢:
[someController.tableView reloadData];
答案 2 :(得分:0)
[[NSNotificationCenter defaultCenter] addObserver:tableView selector:@selector(reloadData) name:notificationName object:self];
应该有效(如果没有,那么Apple可能由于某种原因导致无法直接通知UITableView
)。不要忘记在释放时从观察者中删除tableView
[[NSNotificationCenter defaultCenter] removeObserver:tableView];