2009-08-01 18 views
1

我正在研究我的第一個主要的可可應用程序,用於本科研究項目。核心數據應用程序中的多個視圖和源列表

該應用程序是基於文檔並使用核心數據。其中一個實體是抽象實體,Page. Page是幾種類型頁面的父代:即PageWithHeaderAndFooter, PageWithTwoColumns, BasicPage等。Page具有所有頁面共有的屬性,如標題和作者。每個特定類型的頁面都有一定數量的佈局塊(PageWithHeaderAndFooter有三個:頁眉,頁腳,主體,BasicPage有一個:主體等等)另外,所有Page子類都定義了特定佈局特定方法的實現。

其他相關實體是Style,它定義了Page的外觀。 (將Pages視爲HTML並將Style視爲CSS。)

我想讓我的應用程序具有包含區段的iTunes/Mail-like源列表。 (一部分是頁面,另一部分是樣式。)我有一個很好的主意如何執行分段的源列表(this was a great help)。

然而,撞頭和徒勞的谷歌搜索小時後,這裏就是我想不通:

頁和樣式在源列表中,當你選擇其中一個,全部爲相關領域的該對象出現在右側(主要是NSTextViews,彈出菜單等)。

我已經做好了準備,並在Interface Builder中完成了所有的綁定。

問題是,如果我的源列表包含不同類型的頁面,那麼根據所選頁面的類型,如何獲得不同的視圖以顯示在右側?例如,如果選擇了BasicPage,我只想要你上面看到的內容:一般頁面內容和一個對應於BasicPagebody的NSTextView。但是,如果我選擇PageWithHeaderAndFooter,我想要顯示一般頁面內容以及三個NSTextView(一個用於標題,正文和頁腳)。如果我選​​擇了Style,我想要顯示各種彈出菜單,顏色井等。

至少對於頁面,我們只討論一個或多個NSTextViews,每個NSTextView都對應於相應實體的String屬性。

你會如何做到這一點?

謝謝你的幫助!

回答

1

我有一個3種類型的項目列表,但都非常相似。

我設置Entity到視圖控制器之前我推它,然後在我檢查我有什麼類型的entity和通過指定不同的碎粒加載不同佈局的信息的pushee的viewDidLoad

if([[entity entityType] isEqualToString:@"TypeA"]) { 
    [[NSBundle mainBundle] loadNibNamed:@"TypeAView" owner:self options:nil]; 
} else if(...) { ..... 

這對我來說工作得很好。

相關問題