2011-05-24 110 views
3

我希望我的導航控制器只佔用一半的屏幕。這可能嗎?在IB中,當我拖動時,它迫使我填滿整個屏幕,我無法調整它。如果不可能,是否有其他選擇? 謝謝。調整UINavigationController大小?

回答

1

你可以,但你只能在iOS 5中這樣做,因爲當我試圖比壓入或彈出另一個視圖控制器UINavigation控制器內做任何類型的直接觀看操縱的。導航控制器不會顯示它們。

以下是您需要做的事情。

-(void)viewDidLoad { 
    UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:[[UIViewController alloc] initWithNibName:nil bundle:nil]]; 
    //Used to recieve callbacks (like shouldAutorotateToInterfaceOrientation:) 
    [self addChildViewController:navController]; 
    //View manipulation 
    navController.view.frame = CGRectInset(navController.view.frame, 20, 20); 
    [self.view addSubview:navController.view]; 
    //Calls all the standard methods (viewDidLoad,viewDidUnload,etc.) 
    [navController didMoveToParentViewController:self]; 
} 

此外,如果您已註冊的開發有一個非常好的視頻視圖控制器容器,可能會對你有所幫助,從過去幾年的WWDC。

0

根據你寫的我假設你有一個@property在你的頭文件。喜歡的東西:

@property (nonatomic, strong) IBOutlet UINavigationController *navController;

然後有這個IBOutlet中在你的XIB文件連接到您的navigationController。在同一個xib文件中有一個連接到文件所有者的視圖。在界面構建器中設置此視圖的尺寸,以便在您的情況下只填充一半的屏幕。然後,您將添加navController作爲此視圖的子視圖。如果您也有一個的viewController已經在navController的廈門國際銀行文件,向其中加入在viewDidLoad中做到:

-(void)viewDidLoad { 
    [self addChildViewController:self.navController]; 
    [self.view addSubview:self.navController.view]; 
    [self.navController didMoveToParentViewController:self]; 
} 

否則,如果以編程方式設置RootViewController的信息:

-(void)viewDidLoad { 
     self.navController = [[UINavigationController alloc] initWithRootViewController:yourViewController]; 
     [self addChildViewController:self.navController]; 
     [self.view addSubview:self.navController.view]; 
     [self.navController didMoveToParentViewController:self]; 
} 

您必須添加的自我。 navController作爲childViewController使得其將在它被添加到視圖的尺寸。將它作爲子視圖添加是不足以使視圖調整大小的。希望這可以幫助!