2014-06-30 27 views
0

我想從tabBarController傳遞一個簡單的核心數據對象信息到它的子視圖,以便它們每個引用該對象的不同屬性。作爲一個新手,我不知道從哪裏開始。它似乎不像將數據從一個tableView傳遞到另一個那麼簡單...將對象從tabbarController傳遞到它的子視圖

謝謝你的幫助。

回答

0

這樣做非常簡單。我試圖在子視圖initWithNibName中調用該對象,該對象不起作用。我最終創建了一個setObject函數,並在viewWillAppear中調用了我想要的屬性。

希望這可以幫助別人。

0

A UITabBarController應該處理其他視圖控制器,不處理數據對象。標籤欄控制器如何首先獲取對象引用?你分享的目標是什麼?

讓每個下級VC都保持一個指向該對象的指針,然後它們可以按照相應的鍵路徑到達它們設計要處理的實體。

Tim Roadley的書學習iOS數據核心數據在第5章和第6章中介紹瞭如何將對象從一個視圖控制器(表視圖)傳遞到詳細視圖。這聽起來並不像那你問什麼,但以防萬一...


在迴應評論:

我期待在實現代碼如下,點擊一個單元格,然後標籤欄控制器滑入?這不是標籤欄通常的視覺隱喻;它意味着改變整個程序的模式。請參閱音樂應用程序中的典型示例:歌曲,播放列表,藝術家。

但如果你真的需要那樣做,試試這個(我假設你使用故事板):

  • 在你的tableview控制器prepareForSegue:,告知目的地(標籤欄控制器)它使用什麼對象。
  • 在選項卡欄控制器的-viewWillAppear中,告知每個選項卡有關屬性:self.frobisherViewController.frobisher = self.myWidget.frobisher

您可以改爲告訴每個組件標籤頂級對象:self.frobisherViewController.widget = self.myWidget。但我更喜歡第一種方法,因爲聯繫較少。 frobisherViewController現在需要了解小部件和frobishers。

+0

我使用tabBarController作爲從tableView控制器中拾取的對象的詳細視圖。不知道這是否合理,作爲一個總體新手,我意識到我可能會通過這樣做打破一些基本規則。因此,它繼承了我想要在每個選項卡子控制器中顯示的核心數據對象的屬性。 – Mountainbrussell

0

如果您在標籤欄控制器的視圖控制器(大部分)之間共享同一個對象,也許最好的體系結構就是擁有一箇中央數據對象。

一個典型的模式是單例,某種提供對象的數據管理器,但也許這是過度殺傷。另一個是保持對所有視圖控制器的引用,並在發生某些變化時逐一更新它們 - 也不是很優雅。

你真正想要的就像是一個全局變量。你可以(ab)使用你的應用程序委託(只要給它一個指向該對象的屬性),或者如果你更喜歡即使你的標籤欄控制器(創建一個子類,給它一個屬性)。在後一種情況下,每個視圖控制器可以再拿到對象是這樣的:

NSManagedObject *object = [(MyCustomTabBarController*)self.tabBarController object]; 

例如,您可以檢查更改並刷新你的意見viewWillAppear

相關問題