-1

tabbarcontroller アプリケーションの Tabview の 1 つに uitable があります。現在、他のタブビューでのアクションに応じて、バックグラウンドで更新されたデータのために uitable がリロード (リフレッシュ) する必要があります。ただし、reloadData または beginupdates-endUpdates を使用しても取得できません。

誰かがこの種のシナリオで助けてくれませんか。

前もって感謝します。

4

1 に答える 1

0

これには、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];

}

上記のコードはすべて改良できますが、アイデアが得られるはずです。ご質問/ご不明な点がございましたら、お気軽にお尋ねください。

于 2013-10-24T15:11:53.993 に答える