一連の UITableViewControllers を使用して、階層メニュー全体をドリルダウンおよびドリルアップしようとしています。各 UITableViewController は特定のデータソースを除いてまったく同じであるため、使用する UITableViewController クラスは 1 つだけです。たとえば、レベル 1 は姓の配列、レベル 2 は名の配列、レベル 3 は誕生日の配列です。3 つの UITableViewController (姓用、名用、生年月日用) を用意するのではなく、UITableViewController を 1 つだけ用意して、新しい UITableViewController を割り当て/初期化しますが、連続するたびにデータソース配列で初期化します。ドリルダウン (つまり、didSelectRowAtIndexPath)。4 番目のレベルにドリルダウンする必要がある場合は、アレイを切り替えるだけで問題ありません。その方がうまくスケーリングできます。
「前方」に移動して、正しくドリルダウンできます。それは完璧です。しかし、前に戻る、つまり UINavigationController の「戻る」ボタンをクリックすると、実際に「親の」データを取得しているか、そのように表示されます。しかし、実際にセルをクリックして再び進むと、データソースが内部で切り替えられていないように見えます。正しくキャッシュされているように見えますが、データをクリックすると、実際にはレベル 2 のデータ ソースはレベル 2 のデータによってサポートされていません。実際には、スタックからポップした UITableViewController であるレベル 3 のデータを取得しています。
UINavigationController の「戻るボタン」をオーバーライドしてから、スタックからポップするときにデータソースを更新する必要がありますか? ここで何が欠けているのかわかりません。私の UITableViewCode の長さはほぼ 1000 行で、これが私が直面している一般的な問題です。
Table1 Table2 Table3
smith --> Joe --> 1/1/1980
hit "back"
Table2
Joe is displayed (correct)
tap "Joe" again --> 6/23/1976 (indicating that this is someone else's birthdate, so the datasources have gotten mixed up.)
したがって、前進は正しいですが、後退はデータソースを混同しているようです。