2013-02-19 68 views
1

我有一個UITiewController與UITableView和NavigationController來實現向下鑽取導航系統。用戶可以瀏覽文件夾和文檔的層次結構。向下鑽取,UITableView和GridView

我正在使用NSFetchedResultController從數據庫中填充UITableView。

我想添加使用GridView(fe:AQGridView)瀏覽層次結構的選項。這個想法是在導航欄上有一個按鈕,用於在 tableView和gridView之間切換。

問題/問題1:

什麼是從編程控制器與表與網格切換到控制器的最佳方式?

問題/問題2:

切換之後,如果有其他的控制器被推入導航控制器, 和用戶回到,這些視圖控制器將無任何變化來呈現。我如何更新這些視圖控制器?例如:用戶從表格切換到表格,然後返回,在彈出當前控制器後,用戶再次看到表格 - >錯誤。

回答

2

在顯示層次結構頂層(UITableView)的地方,您需要在請求時添加UITableView或網格視圖作爲子視圖。

您將方法添加到您的視圖控制器:

-(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或完全通過代碼,取其適合你最好。問題是,您不會將其中任何一個推到導航控制器上,只是重新排列信息的顯示方式。

+0

這樣做,我會寫很多if ... else,不是嗎?例如在NSFetchedResultController的一些委託方法中。 if(self.displayingAsGridView)updateGrid else updateTable。你能告訴我你的設計是什麼?謝謝。 – louissmr 2013-02-19 18:54:40

+0

@ louissmr我認爲你不會像你想的那樣寫出儘可能多的條件。數據如何呈現在表格中應該僅在表格的委託中處理(它不知道任何有關網格視圖的內容)。同樣的網格視圖。我會更新一些sudo代碼。 – 2013-02-19 18:58:09

+0

我看到了,可能我會爲網格添加一些委託方法,並在NSFetchedResultController委託方法中重寫一些代碼。謝謝。 – louissmr 2013-02-19 19:08:32