2014-04-08 63 views
1

我正在使用SWRevealViewController插件,它工作的很好,我可以在頁面上很好地導航。我的問題是,當顯示菜單時,您仍然可以與調用該菜單的視圖上的對象進行交互。我想在顯示菜單時禁用我視圖中的按鈕。我正在使用此代碼分配側邊欄按鈕。顯示SWRevealViewController之前的調用方法

_sidebarButton.tintColor = [UIColor colorWithWhite:0.1f alpha:0.9f]; 
_sidebarButton.target = self.revealViewController; 
_sidebarButton.tag=10; 
_sidebarButton.action = @selector(revealToggle:); 
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; 

我不知道如何在揭開revealToggle動作之前調用我自己的類中的函數。有什麼建議麼?

+2

我相信庫有代表火,當菜單即將顯示和關閉。你可以使用這些? – Tander

+1

您可以實現一個'SWRevealViewControllerDelegate'。檢查它的方法。 – Amar

+0

我已經添加了委託並將這些方法添加到我的班級,但他們沒有任何委託方法似乎完全被調用 –

回答

0

在MenuViewController(這是後視圖 - 控制)寫以下內容:

- (void)viewWillAppear:(BOOL)animated { 

    [super viewWillAppear:animated]; 

    [self.revealViewController.frontViewController.view setUserInteractionEnabled:NO]; 
} 

- (void)viewDidDisappear:(BOOL)animated { 

    [super viewDidDisappear:animated]; 

    [self.revealViewController.frontViewController.view setUserInteractionEnabled:YES]; 
} 

,那麼你可以從這個視圖 - 控制獲取每個子視圖。 例如,如果frontviewcontroller是UINavigationController,你可以這樣做:

UINavigationController *navController = (UINavigationController *)self.revealViewController.frontViewController; 

UIViewController *rootViewController = [navController.viewControllers firstObject]; 

NSArray *allViews = [NSArray arrayWithArray:(NSArray *)[rootViewController.view subviews]]; 
+0

這確實有效,但問題是它阻止了我能夠拖回該視圖。 –

相關問題