2010-06-30 81 views
0

我正在構建我的第二個應用程序,我試圖從我在第一個腳趾上釘住腳趾的位置學習。複雜佈局的ViewController設計問題

就像在上一個應用程序中一樣,我的應用程序的某些部分具有沿底部按鈕(基本上是自定義選項卡欄)的按鈕,可以觸發屏幕主區域大部分內容的切換。一個是地圖視圖,一個是表格視圖,一個是網格視圖,以三種不同的方式查看相同的對象。

在我上一個應用程序中,每個內容選項都是一個單獨的視圖,由單獨的ViewControllers管理。這工作,但有些地方很尷尬。在這些VC之間傳遞數據有點棘手(尤其是傳回上游),並且我完全被我的嵌套視圖控制器無法訪問self.navigationController所困惑。可以說,我現在知道如何與該計劃合作(而且我也是),但我對更好的方式感興趣。

我現在在想,也許整個事情應該是一個視圖控制器,它應該有單獨的頂層UIView對象,當它點擊底部的標籤時,它將進入和退出。

問題是,我的兩個嵌套視圖上都有表格。所以我需要寫出非常複雜的UITableViewDelegate方法來找出我正在談論的表,或創建單獨的UITableViewController子類來管理我的表數據。無論哪種方式,這只是消除了我希望通過將其全部保留在一個View Controller中而實現的大多數簡單性。

另一件事是,有這些內容視圖是同一視圖控制器內的UIViews有一些分歧。沒有加載時間來交換視圖,但是如果用戶從不訪問一個或多個視圖選項,我就不需要加載內存。

想法?

回答

0

問題是,我的兩個嵌套視圖上都有表格。所以我需要寫出非常複雜的UITableViewDelegate方法來找出我正在談論的表,或創建單獨的UITableViewController子類來管理我的表數據。

表視圖數據源/委託不需要是視圖控制器,它可以是任何對象。因此,您可以編寫兩個自定義類,作爲表視圖的數據源/委託。

另一件事是,有這些內容視圖是同一個視圖控制器內的UIViews有一些分歧。沒有加載時間來交換視圖,但是如果用戶從不訪問一個或多個視圖選項,我就不需要加載內存。

在這種情況下,您應該加載視圖,即在需要之前不加載任何東西。並且發佈當您收到內存警告時不需要的東西。

+0

謝謝,奧萊。關於主要問題的任何建議?我的嵌套視圖應該有單獨的控制器嗎?你會怎麼做? – 2010-06-30 13:42:41

+0

沒有一個正確的方法,它完全取決於您的應用程序。 Apple幾乎建議我們不要將UIViewControllers用於不佔用整個屏幕的視圖。但即使你想採納這個建議,編寫自己的自定義控制器(從NSObject分類)也是有意義的,以避免將過多的代碼放入主視圖控制器。 – 2010-06-30 14:33:16

+0

呵呵。我想,在一個人身上做這件事的興趣根植於我想要以一種正確的方式去做的願望。也許我會按照我知道如何去做的方式去做。我在這裏有一個截止日期... 謝謝奧萊! – 2010-06-30 15:30:49