0

一連の 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.)  

したがって、前進は正しいですが、後退はデータソースを混同しているようです。

4

1 に答える 1

1

このプロジェクトがどのようにそれを行うかを検討してください。plistからテーブル階層を作成する代わりに、あなたが説明したとおりのことを行っています。サンプル アプリでの前後の移動は正常に機能し、plist を変更してより多くのレベルを含めることができます。

于 2012-07-24T04:16:07.613 に答える