1

メインの UITableView クラスに -(void) メソッドがあり、これを使用してデータを更新します。やや複雑なのでここには書きませんが、viewWillAppearの際にも呼び出されるので、マルチタスクから開いた場合を除いて、tableViewが表示されるたびにデータが適切に更新されます。

正確な中断状態を提供することになっていることはわかっていますが、私のタイプのアプリでは、アプリを開くたびに更新する必要があります。

私はこれを成功させました:

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [self.window.rootViewController viewWillAppear:YES];
}  

これにより、データは完全に更新されますが、UINavigationController で popViewController アニメーションを台無しにするなど、他にも多くの問題が発生します。そもそもそれが最善の方法ではないと思います。(誰でもそれを修正する方法を知っていますか?)

私がやりたいことは、マルチタスクの場合を含め、アプリを起動するたびに refreshTableviewData メソッドを実行することです。

ここからどこへ行くべきかわかりませんが、何か提案をいただければ幸いです。

4

1 に答える 1

1

当てはまるかもしれないし、当てはまらないかもしれないいくつかのアイデアを捨てますが、これらをテストするための同等のコードがないので、私の代わりにそれらを試す必要があります. :-)

viewWillAppear:を呼び出す必要があるためsuper viewWillAppear:、そこで発生する特別な UIViewController マジックがあると考えています。これは、アプリの読み込みプロセスのその時点では発生しないはずです。あなたはrefreshTableviewDataメソッドを持っていると言うので、それを で呼び出すapplicationWillEnterForeground:か、少なくとも を呼び出さずにテーブルを更新するためにできる最低限のことを見つけてみてくださいviewWillAppear

その他の選択肢: ビュー コントローラーを に登録することもできます/UIApplicationWillEnterForegroundNotification。または、それが機能しない場合は、 applicationDidBecomeActive(および/または同等の通知) を使用してみてください。最後の手段として (これはボーダーライン ハックです)、アプリをロードするときに、「データを更新しています...」というメッセージを画面に表示し、NSTimer を使用してテーブルのデータを更新します。たとえば、1/4 です。または 1/2 秒後。

于 2012-08-19T23:25:57.390 に答える