[英]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.