2011-11-06 54 views
1

我有一個課程來閱讀條形碼,當我閱讀條形碼時,我會通知NSNotificationCenter如下。NSNotificationCenter有幫助嗎?

-(void)barcodeData:(NSString *)barcode type:(int)type { 

    barcodeValue = barcode; 

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

} 

然後在幾個視圖控制器我添加觀測得到的條形碼值等作爲。

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


-(void) BarcodeRead 
{ 
    // 
} 

的問題是何時通知被髮送到通知中心,在所有的觀點,我補充觀察員,他們得到通知並調用該方法BarcodeRead,但我想,如果應用程序是在視圖控制器「A 「只需要獲得通知,而不是全部。

感謝您的幫助

+0

http://stackoverflow.com/a/2191802/64457 - 爲我工作發送一個消息到多個接收器。如果您只想要一個對象獲取消息 - 根據您的接收者列表發送不同的消息。例如postNotificationName:@「BarcodeRead_ALL」vs postNotificationName:@「BarcodeRead_TARGET_1」。您可以添加粒度到發佈的消息以定位特定的對象 – Paxic

回答

1

我通常會將註冊/註銷代碼放入viewWillAppear/viewWillDisappear方法中,以確保通知僅在控制器處於活動狀態時顯示。

1

那麼你應該不應該收到通知註銷自己作爲觀察員,一旦他們去屏幕外(一個重新註冊,當他們回來的屏幕,當然)的對象。