簡體   English   中英

如何更新祖父母表視圖

[英]How to update grandparent table view

我正在使用多視圖控制器方案,用戶可能會更改最深視圖中顯示的值。 假設A是第一名,B是第二名,C是第三名。

在C中使用導航欄返回到B時,必須在A中執行表重新加載。 (表很小,所以我不必費心去優化只更新一行)。

使用一個協議,我想C應該提供一個協議,而A可以使用一個委托在諸如someRowIsUpdated之類的函數中執行它。 我認為缺點是A應該包含C的標頭才能知道該協議。 當添加其他控制器(例如同級控制器)時,必須更新A的來源,並添加一個額外的包含。 這對我來說似乎是錯誤的方式。

另一種選擇是在實例化B時從A向下傳遞一些id,而在B實例化C時從C向下傳遞一些id。對我來說,這似乎也很笨拙。

當C想要通知A做某事時,最好的方法是什么? 通知? 我希望C包含A的標頭,而不是相反。

有什么想法嗎?

我認為,通知確實確實是這里最重要的解決方案。 如果以后要更改某些內容,它也為您提供了很好的靈活性。

這是核心數據,您必須謹慎對待通知。 原因是由於基礎持久性存儲的某些鎖定機制,不應在多個線程上使用核心數據。

因此,為了方便起見,我建議沿控制器鏈傳遞唯一的NSManagedObjectContext ,以及適當的NSManagedObject子類。 如果您有權訪問數據模型,則無需引用父控制器或與之通信。 這也是一種更好的設計模式。

您會發現, #importing類和聲明屬性的幾行代碼最終將遠遠少於處理通知。 (恕我直言,也遠不那么“笨拙”。;-))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM