0

アプリがバックグラウンドからフォアグラウンドになったときにテーブルをリロードしたいのですが、アプリの delegate.mi でこのようにしましたが、機能しません

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"applicationWillEnterForeground");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"EnteredForeground"
                                                        object:nil];

}

そして私のviewControllerで私は次のように働いています

- (void)viewDidLoad
{
    [super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenAppEnteredIntoForeground:) name:@"EnteredForeground" object:nil];
}
- (void)whenAppEnteredIntoForeground:(id)object {
    NSLog(@"log msg");
    [tblSearch reloadData];
}

私は何をすべきか?私は何の間違いをしていますか?助けてください

4

3 に答える 3

2

まず、アプリがフォアグラウンドになったときに通知を再ブロードキャストする必要はありません。View Controller から通知を登録できます。

あなたの場合、二次通知が送信されるまでビューが読み込まれない可能性があります。これが、View Controller が応答できない理由です。ブレークポイントを使用すると、これが当てはまるかどうかを確認できます。

代わりにこれを使用してください:

- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenAppEnteredIntoForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}

また、appdelegate から通知を再ブロードキャストする必要はありません。

于 2013-09-16T11:46:21.697 に答える
0
- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appEnteredIntoForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}


- (void)appEnteredIntoForeground:(id)object {

    [tableView reloadData];
}
于 2013-09-16T13:14:40.877 に答える
-2

Reload Data がメイン スレッドから呼び出す必要があることを確認してください。そうしないと、リロードされません。

于 2013-09-16T11:44:44.323 に答える