tabbarcontroller アプリケーションの Tabview の 1 つに uitable があります。現在、他のタブビューでのアクションに応じて、バックグラウンドで更新されたデータのために uitable がリロード (リフレッシュ) する必要があります。ただし、reloadData または beginupdates-endUpdates を使用しても取得できません。
誰かがこの種のシナリオで助けてくれませんか。
前もって感謝します。
tabbarcontroller アプリケーションの Tabview の 1 つに uitable があります。現在、他のタブビューでのアクションに応じて、バックグラウンドで更新されたデータのために uitable がリロード (リフレッシュ) する必要があります。ただし、reloadData または beginupdates-endUpdates を使用しても取得できません。
誰かがこの種のシナリオで助けてくれませんか。
前もって感謝します。
これには、NSNotification と viewWillAppear/viewDidAppear の組み合わせを使用することをお勧めします。
viewWillAppear が表示されたとき - テーブルビューをリロードします (最後にデータを表示してからのデータの変更を探して調整することができます)
- (void)viewWillAppear:(BOOL)animated
{
// Your other code here...
[self.tableview reloadData];
}
ビューが表示され、バックグラウンドでデータが他のオブジェクトによって変更されると、そのオブジェクトに通知を送信するように依頼し、テーブルビューのviewcontrollerでその通知をviewWillAppearに登録し、viewWillDisappearで登録解除します
他のオブジェクトは、このように通知を送信/投稿する必要があります (データ変更の直後)-
[[NSNotificationCenter defaultCenter] postNotificationName:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];
viewController 内の以下のすべてのコード (更新するテーブルがあります) -
このように登録します -
- (void)viewWillAppear:(BOOL)animated
{
// Your other code here...
[self.tableview reloadData];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNewDataReceivedNotification:) name:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];
}
ビューコントローラーの通知ハンドラー -
- (void)handleNewDataReceivedNotification:(NSNotification *)notification
{
// Your other code here...
[self.tableview reloadData];
}
そして、このように登録解除します -
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"com.yourcompany.appname.XYZdataChangeNotification" object:nil];
}
上記のコードはすべて改良できますが、アイデアが得られるはずです。ご質問/ご不明な点がございましたら、お気軽にお尋ねください。