簡體   English   中英

在視圖控制器之間進行反向通信的最佳方法是什么?

[英]What's the best way to reverse communicate between view controllers?

我一直在考慮這個問題,並閱讀了另一個關於建議在視圖控制器之間進行通信的最佳方式的stackoverflow問題 但是,該問題/答案似乎並未解決逆向行為的最佳方法。

也就是說,要將數據從ParentController傳遞到其ModalController ,我們可以像initWithDataToProcess:一樣初始化ModalController

但是,如果我們想做相反的事情怎么辦? 我如何通知前一個控制器新數據?

例如,用戶單擊ParentController上的“新人”按鈕。 我啟動一個新的ModalController並通過presentModalViewController:向用戶展示人員編輯器視圖。 用戶單擊“完成”以添加新人。 dismissModalViewController:並且UI返回到ParentController的視圖。

在單例對象(應用程序委托或其他)中使用全局字段引用是不好的。 委派 (通過正式協議)和通知 (通過NSNotificationCenter)似乎過大了。 有什么建議么?

使用通知通常比較干凈。 像這樣添加您的觀察者...。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappened:) name:@"MyNotification" object:nil];

以及代碼中的其他位置,您將在需要時發布通知。

[[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self];

在示例中,我傳遞了self,但是您可以傳遞您真正希望的任何對象,它將被饋送到您的somethingHappened:函數

重要的是保持@“ MyNotification”的描述性和唯一性。 在項目開頭添加項目名稱是保持唯一性的好方法...例如 @“ ProjAXViewHasGotData”

代表幾乎是您所能做的。 如果您認為為此聲明一個新協議太麻煩了,只需傳入父視圖控制器並讓模態控制器在其上調用方法即可。

暫無
暫無

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

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