2011-10-12 49 views
0

我正在編寫一個項目,其中一些產品與它們各自的類別和子類別從XML文件中讀取,然後必須顯示在UITableView中。沒有UINavigationController的導航式行爲

問題是,沒有固定深度的級別(XML標籤讀取像這樣:Category> subcategory> subsubcategory> ...>等),所以我不能有一個固定的視圖集,從而使用一個UINavigationController。

所以目前 - 它的工作非常完美 - 我從一些NSMutableArrays中讀取數據,這些數據是從xml文件加載的,我在UITableView中顯示它們。按預期工作。這些對象甚至可以鏈接到彼此,因此新數據集是最後一次在UITableView上按下的元素的子元素。

但是,很顯然,我需要一個返回按鈕,而這正是我卡住了,我已經與UINavigationController的以前做過,但我似乎無法找到一個方法來

一)增加(我通過IntefaceBuilder添加了一個UINavigationBar,並將它鏈接到IBOutlet)

b)當按下按鈕時,將某些代碼關聯到調用前一個數據集。

任何幫助?

回答

0

你應該仍然遵循通常的導航控制器設計模式。如果您有多個級別的類別,請遞歸調用相同的視圖控制器

我曾經做過這樣的實現(也是基於xml文件)在didSelectRowAtIndexPath:我會檢查選中的對象是否有更多的「子」 - 在這種情況下,我會推動另一個等效的視圖控制器導航堆棧;如果不是,我會提供詳細視圖控制器。

+0

事情是,用我目前的設計,我只使用一個視圖控制器,其中包含表(和導航欄),我只是重新加載表中的數據,每次用戶點擊一個項目。 – magtak

+0

我看到 - 我仍然認爲使用多個「UITableViewController」實例是更好的方法。 (你不需要編寫一個新的控制器子類。)通過這種方式,你也不需要實現自己的動畫等等。 – Mundi

+0

因爲我對ObjC有點新鮮,儘管我理解這個概念,但我很難搞清楚如何做到這一點,介意拋出一些關於如何解決UITableViewController的多個實例的虛擬代碼?我的意思是,我應該創建它們以及如何在類中的哪個位置(tableView的委託和數據源)?提前致謝。 – magtak

0

如果你想達到這個目標,你必須實現一個堆棧結構,它的功能是push和pop。就像UINavigationController的工作方式一樣。如果你的解決方案不是一個完全定製的解決方案,我會簡單地使用UINavigationController推送UITableViewControllers並讓它爲我處理堆棧,而不是重新發明輪子。

相關問題