我有一個標籤欄應用程序和2個選項卡使用相同的類(不同的實例)來顯示UITableView。基於哪個選項卡被點擊的外觀,功能等一些小的變化。我有的問題是,從UITableView我顯示一個模式視圖,當它被解僱它發佈NSNotification重新加載UITableView(由UITableView的視圖控制器),但我得到2個NSNotifications發佈,因爲在我的應用程序中有2個相同類的實例。我如何才能將通知發佈到僅由它調用的實例中?NSNotification ...正確的方法?
回答
當您設置一個處理程序的NSNotification
你可以指定誰通知你有興趣的object
。
您應該在第一個表視圖控制器設置爲只關心那些從具體發佈通知模態視圖控制器,和你的第二個表視圖控制器的實例只關心從模態視圖控制器的其特定實例發佈通知:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handler:)
name:notificationName
object:instanceOfModalViewController];
這樣,當通知從您的模式視圖控制器發佈,只有指定其感興趣的表視圖控制器將處理通知。
啊,這很有道理。我需要在與dealloc不同的地方刪除通知(因爲它是目前的),以便在按下顯示模式視圖的按鈕(這也是我現在創建通知的地方)時不重複通知? – Darthtong 2011-02-28 16:29:25
你應該通知'NSNotificationCenter'你想開始監聽,就像你要顯示模態視圖控制器一樣。然後,您應該停止監聽(通過在處理完通知後調用'[[NSNotificationCenter defaultCenter] removeObserver:self name:notificationName object:instanceOfModalViewController];')。 – Jasarien 2011-02-28 16:33:31
我可能不得不將其刪除,因爲通知並不總是被稱爲模態視圖被解僱,謝謝你的幫助! – Darthtong 2011-02-28 17:34:33
- 1. 如何正確設置NSNotification併發布?
- 2. 正確方法
- 3. 正確方法
- 4. 正確方法
- 5. 正確方法
- 6. 正確方法
- 7. 正確方法
- 8. 即使正確調用方法,NSNotification處理程序方法內部也沒有執行任何代碼
- 9. 正確方法1.9.1
- 10. 設計方法的正確方法?
- 11. 調用MembershipProvider方法的正確方法?
- 12. 正確的方法來解除MFMailComposeViewController
- 13. NSNotification不是調用@selector方法
- 14. 正確的方法屬性
- 15. 正確的方法形式
- 16. 授權的正確方法
- 17. 使用正確的方法
- 18. 正確的測試方法
- 19. 選擇正確的方法
- 20. 正確的方法調用
- 21. RxSwift正確的方法
- 22. 線程的正確方法
- 23. 分類正確的方法
- 24. 確定正確downcast的最佳方法
- 25. 如何正確覆蓋textDidChange:方法?
- 26. NSNotification是檢測變化的正確選擇嗎?
- 27. 糾正Mercurial錯誤的正確方法?
- 28. NSNotification正在多次提出
- 29. 確保DbCommand.Cancel()方法運行正常的最準確方法是?
- 30. 調用其他方法的TDD方法的正確方法
你的意思是'我的應用程序中有兩個相同的調用實例'?你能更具體一點嗎? – FreeAsInBeer 2011-02-28 16:15:27
糟糕,'class'不是'call' – Darthtong 2011-02-28 16:16:52