2011-02-28 75 views
0

我有一個標籤欄應用程序和2個選項卡使用相同的類(不同的實例)來顯示UITableView。基於哪個選項卡被點擊的外觀,功能等一些小的變化。我有的問題是,從UITableView我顯示一個模式視圖,當它被解僱它發佈NSNotification重新加載UITableView(由UITableView的視圖控制器),但我得到2個NSNotifications發佈,因爲在我的應用程序中有2個相同類的實例。我如何才能將通知發佈到僅由它調用的實例中?NSNotification ...正確的方法?

+0

你的意思是'我的應用程序中有兩個相同的調用實例'?你能更具體一點嗎? – FreeAsInBeer 2011-02-28 16:15:27

+0

糟糕,'class'不是'call' – Darthtong 2011-02-28 16:16:52

回答

3

當您設置一個處理程序的NSNotification你可以指定誰通知你有興趣的object

您應該在第一個表視圖控制器設置爲只關心那些從具體發佈通知模態視圖控制器,和你的第二個表視圖控制器的實例只關心從模態視圖控制器的特定實例發佈通知:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(handler:) 
              name:notificationName 
              object:instanceOfModalViewController]; 

這樣,當通知從您的模式視圖控制器發佈,只有指定其感興趣的表視圖控制器將處理通知。

+0

啊,這很有道理。我需要在與dealloc不同的地方刪除通知(因爲它是目前的),以便在按下顯示模式視圖的按鈕(這也是我現在創建通知的地方)時不重複通知? – Darthtong 2011-02-28 16:29:25

+0

你應該通知'NSNotificationCenter'你想開始監聽,就像你要顯示模態視圖控制器一樣。然後,您應該停止監聽(通過在處理完通知後調用'[[NSNotificationCenter defaultCenter] removeObserver:self name:notificationName object:instanceOfModalViewController];')。 – Jasarien 2011-02-28 16:33:31

+0

我可能不得不將其刪除,因爲通知並不總是被稱爲模態視圖被解僱,謝謝你的幫助! – Darthtong 2011-02-28 17:34:33