2009-10-27 30 views
0

好的。這是一個挑戰。標籤欄視圖中的託管對象上下文

我有一個導航控制器內的tableview。

我把它從根目錄中推出,在那裏我有一個添加動作,允許我添加一條新記錄。這工作正常。

現在我試圖做的是將此tableview添加到選項卡欄視圖(沒有標籤欄控制器cuz不會工作),但在同一個導航控制器。

所以我想要做的是:根> TabBarView(加載Tableview)>添加新記錄。

問題在於託管對象上下文,我得到整個「無法找到實體錯誤」,但我不知道如何解決它。

我已經設法讓AddRecord模式視圖控制器顯示從tabBarView,但它呈現自己沒有導航欄,而如果我嘗試在單獨的tableView(在tabbar之外)添加記錄它的否問題。

我現在從TabBarView的navigationBarbuttons調用我的方法,路由到tableviews方法。

我知道我的方法必須從tabBarView而不是實際的tableview中調用,而且它們會觸發,但我不知道如何在tabView中管理MOC。

哦,這是基於coredata食譜和書籍,所以當添加記錄方法被激發時,它會創建一個新的MOC來創建它,然後在完成後重新集成到主MOC中。

任何想法?

回答

0

聽起來好像你有幾個問題。

  1. 「無法找到實體」的錯誤 - 這取決於其管理你使用對象上下文。如果您創建了一個單獨的MOC來管理您正在編輯的對象(順便提一下,這是一個好主意),請確保爲其指定一個持久性商店協調員。這是MOC如何發現什麼對象可用。如果您使用在App Delegate中創建的MOC,請確保您正確拼寫實體的名稱。
  2. 工作表中沒有導航欄 - 將視圖控制器按到導航控制器上時,其使用navigationItem用於填充導航欄。當您將視圖控制器顯示爲工作表時,僅顯示視圖控制器。它沒有嵌入到導航控制器中。爲了讓導航項目顯示,你需要與你的視圖控制器的根目錄中創建一個新的導航控制器,然後呈現導航控制器的視圖。
0

就主要MOC而言,視圖和控制器應該是不相關的。在您使用的任何控制器中獲取對MOC的引用,並使用該MOC進行操作。如果您的應用程序委託創建主MOC,請將其作爲該委託的屬性,並從您的視圖或選項卡控制器訪問該屬性。

我不太關注你有什麼導航問題,但是如果在你需要時沒有導航欄,我懷疑你需要創建並添加一個UINavigationController來添加一個UIViewController子類。將子類設置爲新的UINavigationController的根目錄,並將控制器放入選項卡或其他內容中。

您的託管對象上下文(MOC)不應該依賴導航或視圖。它是模型的一部分。 (雖然如你所知,第二個MOC對於可取消的編輯視圖依賴於導航到編輯器使用它的程度。)

相關問題