其他controller中让table reload

今天做seekPatent,要在一个controller里更新数据,然后在另外的viewController中更新table。
发现在objective-c中用observer模式还是很容易的:

1. Using notifications:

存储完数据并且方法返回之前,发布notification. Something like this:

//[[NSNotificationCenter defaultCenter] postNotificationName:@”DataSaved” object:nil];

在处理table的controller中, implement

- (void) dataSaved:(NSNotification *)notification{

   
[self.tableView reloadData];

}

在它的 viewDidLoad 方法中注册notification:

[[NSNotificationCenter defaultCenter] addObserver:self
                                selector
:@selector(dataSaved:)
                                                 name
:@"DataSaved" object:nil];

最后,为了做一个好的内存公民,在dealloc方法中unregister掉:

[[NSNotificationCenter defaultCenter] removeObserver:self];

完成!!!


在java中,实现一下observable接口,就okay。objective-c中也相似,下面也记录下第二种方法:

2.Using a protocol:

创建一个协议(protocol),它有一个回调方法让另外一个controller使用

@protocol dataSavedDelegate
-(void)dataSaved;
@end

一旦存储完数据之后:

[(id< dataSavedDelegate >)object dataSaved];

然后在controller中实现,即在dataSaved()方法中重载表格。



Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s