1

ドリルダウンナビゲーションシステムを実装するために、UITableViewとNavigationControllerを備えたUIViewControllerがあります。ユーザーは、フォルダーとドキュメントの階層を参照できます。

データベースから UITableView を設定するために NSFetchedResultController を使用しています。

GridView (fe: AQGridView) を使用して階層を参照するオプションを追加したいと考えています。アイデアは、tableView と gridView を切り替えるためのボタンをナビゲーション バーに配置することです。

問題/質問 1:

テーブルを使用するコントローラーからグリッドを使用するコントローラーにプログラムで切り替える最良の方法は何ですか?

問題/質問 2:

切り替え後、ナビゲーション コントローラーにプッシュされた他のコントローラーがあり、ユーザーが戻った場合、これらのビュー コントローラーは変更されずに表示されます。これらのView Controllerを更新するにはどうすればよいですか? 例: ユーザーがテーブルからグリッドに切り替えてから元に戻り、現在のコントローラーをポップした後、ユーザーに再びテーブルが表示されます -> 間違っています。

4

1 に答える 1

2

階層の最上位レベル (UITableView) を表示する場合、要求されたときに UITableView またはグリッド ビューをサブビューとして追加する必要があります。

View Controller にメソッドを追加します。

-(void)displayAsGridView {
    // hide/remove the table view
    // populate the grid view and display
}

-(void)displayAsTableView {
    // remove or hide grid view
    // make sure the table view exists, if not, create it
    [self.tableView reloadData];
}

テーブルのデータ ソース:

-(UITableViewCell*)tableView:(UITaleView*)tableView cellForRowAtIndexPath:(IndexPath*)indexPath {
    // you populate the view cell as you would for any other table
}

どちらも IB で作成することも、完全にコードを介して作成することもできます。重要なのは、情報の表示方法を再配置するためだけに、これらのいずれかをナビゲーション コントローラーにプッシュしないことです。

于 2013-02-19T18:31:34.670 に答える