2

ナビゲーションコントローラー階層にある5つのビューコントローラーがあります。最後のビュー コントローラーに到達すると、テーブル ビュー コントローラーである「ホーム」ビュー コントローラー (CardWalletViewController という名前) に戻るためのボタンがあります。前回の VC で使用した方法は次のとおりです ( PointsResultsVC)

- (IBAction)homePressed:(id)sender {
    NSArray *VCs = [self.navigationController viewControllers];
    [self.navigationController popToViewController:[VCs objectAtIndex:0] animated:YES];
}

CardWalletVC のセルは、NSUserDefaults に保存されたカードのインスタンスからの値で満たされ、正常に動作します。

今、私がしたいのは、 my の値を更新することですCardWalletViewController。これは、 my から来るカードのポイントですPointsResultsVC。このポイントはNSUserDefaults に保存されることに注意してください。

CardWalletVC に表示される値を更新しようとするプロセスで、上記のクラスの、、および -[self.tableView reloadData];内に配置しました。この方法で1つずつ配置してみましたが、うまくいかないようです。-viewDidLoad-viewWillAppearviewDidAppear

アドバイスください。

編集:問題は解決しました

これは私のガイドとして機能しました あるタブからデータを保存し、別のタブでデータをリロードします

そして、私が発見したよう-viewDidLoadに、特定のクラスは、アプリの実行中に一度だけ呼び出されます。一方-viewWillAppear、ビューが表示されるたびに呼び出されます。

そのため、NSUserDefaults に保存された値をロードする方法を から に移動し -viewDidLoadました-viewWillAppear。また、中-viewWillAppearに入れました[self.tableView reloadData]。その後、問題は解決しました。

4

1 に答える 1

0

うまくいかないことがたくさんあるので、それを絞り込むためにより多くの情報を提供する必要があります。

まず、viewDidLoad は呼び出されないので、ここから削除できます。viewWillAppear と viewDidAppear の両方が呼び出されるため、必要なのはこれら 2 つのメソッドのいずれかだけです。

次に、実際の問題を特定する必要があります。

1 - self.tableView はテーブルへの適切な参照ですか? 参照を適切に維持していますか?

2 - テーブルは実際に再ロードされていますが、古いデータを使用していますか? それともまったく再ロードされていませんか? willDisplayCell メソッドをログに記録して、ビューが表示されたときに何が起こっているかを確認できます。

その情報を使用して、根本原因を解決可能な問題に絞り込むことができます。

于 2012-05-10T03:48:19.667 に答える