2016-12-05 120 views
1

我使用JASidePanels在我aplication故事板,並使用NSNotificationCenterNSNotificationCenter在viewDidLoad中

的問題打了兩次電話是:

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

它被調用兩次viewDidLoad一個呼叫時, storyboard將顯示CenterViewController和第二個,當我揭示左面板LeftViewController,我使用相同的類爲兩個,有沒有辦法阻止?

我已經試過了波紋管代碼,但不工作,

[[NSNotificationCenter defaultCenter] removeObserver:self 
                 name:@"leftPanelMsg" 
                 object:nil]; 

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

而且我用bool的exec代碼只是1次,我轉mustRun BOOL到NO代碼,則當首次執行( leftPanelMsg),但在下一個通知時leftPanelMsg被再次調用mustRun返回它的值設置爲true,不知道爲什麼

回答

1

它看起來像該庫提供了一個視圖控制器擴展,回答sidePanelController。所以,你的VC的可以直接問...

#import "UIViewController+JASidePanel.h" 
// ... 

if (self.sidePanelController.centerPanel == self) { 
    // observe notification 
} 

,或者你可以問:

if (self.sidePanelController.leftPanel == self) // ... and so on 
+0

謝謝你,嗯實際上我使用'的UIViewController + JASidePanel.h'我把'if'聲明在'myViewController.m'的'ViewDidLoad'裏面,但是這個'if'裏面的代碼也被調用了兩次:( – CGR

+0

你的意思是邊和中心視圖控制器都是== self.sidePanelController嗎?不可能是這種情況。 – danh

+0

兩者在他們的'Storyboard'中具有相同的類'myViewController.m',但是具有不同的'Storyboard Id','centerViewcontroller'和'leftViewController' – CGR