2012-07-11 60 views
0

我正在構建基於單個視圖控制器的簡單日曆應用程序。視圖控制器具有層次結構,如下:這是代表團的正確「佈局」嗎?

  1. CDViewController
    • CalendarView
    • 使用EventView
    • AgendaView
      • TPKeyboardAvoidingTableView
      • EventInfoCell

我的問題具體涉及我的AgendaView中的EventInfoCell。 Cell根據需要顯示的信息有多種佈局textFields和textViews的方法。這些文本字段和文本視圖是基於tableview的編輯狀態和編輯/刪除核心數據對象來啓用/可編輯的。當其中的字符串發生變化時,單元需要提醒managedObjectContext以保存或刪除對象,更新填充其tableView的議程視圖內的模型,並更新與日曆的所有事件相關的模型。我當前的配置使得viewController成爲EventInfoCell的委託,但是這使得agendaView模型的更新複雜化。將EventInfoCell委託設置爲AgendaView,在信息發生變化時告訴它,然後讓AgendaView將它傳遞給它的委託(viewController),但是如果它更符合MVC,而不是完全繞過議程視圖,這似乎適得其反。 ,我會很樂意實施它。我試圖弄清楚什麼是更好的設計模式,任何輸入都不勝感激。

回答

0

「這似乎是適得其反設置EventInfoCell代表是AgendaView,告訴它的信息發生變化時,再有AgendaView字通到它的委託」

爲什麼這個問題似乎適得其反?這是我處理它的方式。如果你不這樣做,那麼你將不得不打開某種屬性或通知或AgendaView中的某些東西ViewController將信息傳回給它。這聽起來比起把信息傳遞給我更加適得其反。此外,您最終可能在EventInfoCell中進行某種更改,要求它的delegate發揮作用,但不一定會更改Core Data模型。所以,我認爲你應該把代表團通過鏈條。