2013-01-10 51 views
0

我有一個基於ipad應用的導航欄。移動導航欄框架是否正確?

在某些時候,我想推入另一個視圖控制器到視圖控制器層次結構。然後,當用戶選中某個按鈕時,我想顯示一個leftMenu控制器。要做到這一點,我有兩個觀點:

擁有所有內容

而且這是一個leftMenu不可見的視圖內容視圖。這是在內容視圖下。

因此,當用戶按下按鈕,什麼林現在在做正確的內容畫面和導航欄移動到右側,使leftMenu可見:

self.navigationController.navigationBar.frame = CGRectMake(271.0, self.navigationController.navigationBar.frame.origin.y, self.navigationController.navigationBar.frame.size.width, self.self.navigationController.navigationBar.frame.size.height); 


    self.contentView.frame = CGRectMake(271.0, self.contentView.frame.origin.y, self.contentView.frame.size.width, self.contentView.frame.size.height); 

這是工作,但第一排在左側菜單中並不是「可點擊的」,其中導航欄被塗上了。它像導航欄仍然在捕捉標籤事件。

是否正確做?:

self.navigationController.navigationBar.frame = CGRectMake(271.0, self.navigationController.navigationBar.frame.origin.y, self.navigationController.navigationBar.frame.size.width, self.self.navigationController.navigationBar.frame.size.height); 

如果沒有,請告訴我propper方式來實現我想要什麼?

繼承人和圖像ilustrating是什麼問題:

example http://i47.tinypic.com/b3sxmr.png

+0

我建議你使用DDMenuController ..如果你試圖顯示和隱藏左菜單(就像在Facebook的移動應用程序).​​.甚至路徑應用程序.. –

+0

編號喜歡做我自己的,可以不那麼困難。 (堅果要檢查源代碼) – pdrcabrod

回答

1

我認爲這是最好使用自定義容器控制器做這種事情,而不是移動的導航條。在IB中,這可以很容易地設置。從一個UIViewController開始,爲它添加一個容器視圖,然後調整你想要的大小。然後在檢查器中,將它的x值設置爲減去其寬度,這將使其離開屏幕左側。然後添加另一個容器視圖並將其大小設置爲全屏。然後,您可以刪除使用該容器視圖獲得的視圖控制器,然後從容器視圖中將其拖至您的初始導航控制器(已設置的用戶界面),以將其與嵌入式Segue連接起來。您開始使用的UIViewController應該成爲故事板的初始視圖控制器。到在側視圖動,我在該自定義容器控制器使用以下代碼:

-(void)slideInLeft { 
    if (isRevealed == NO) { 
     [UIView animateWithDuration:.6 animations:^{ 
      leftView.center = CGPointMake(leftView.center.x + 100, leftView.center.y); 
      mainView.center = CGPointMake(mainView.center.x + 100, mainView.center.y); 
     } completion:^(BOOL finished) { 
      isRevealed = YES; ; 
     }]; 
    }else{ 
     [UIView animateWithDuration:.6 animations:^{ 
      leftView.center = CGPointMake(leftView.center.x - 100, leftView.center.y); 
      mainView.center = CGPointMake(mainView.center.x - 100, mainView.center.y); 
     } completion:^(BOOL finished) { 
      isRevealed = NO; 
     }]; 
    } 

} 

leftView和MAINVIEW是IBOutlets到2層容器的意見。我請從一個按鈕在主視圖控制器這種方法(這是嵌入在大容器視圖導航控制器的根視圖控制器):

-(IBAction)callSlideIn:(id)sender { 
    [(ViewController *)self.navigationController.parentViewController slideInLeft]; 
} 
0

我發現了一個「快」的方式來實現這一點(和位哈克IMO)

我加入了leftMenu以便在視圖頂部視圖層次結構:

UIWindow* window = [UIApplication sharedApplication].keyWindow; 
if (!window) 
    window = [[UIApplication sharedApplication].windows objectAtIndex:0]; 

[[[window subviews] objectAtIndex:0] addSubview:self.leftMenu.view]; 

現在是萊比導航欄深,當然,它的點擊