2013-07-22 100 views
6

我有UIToolbar(底部)的UIViewController,我想在UINavigationBar中添加一個UINavigationController。 但是不顯示UINavigationController。在UIViewController中添加UINavigationController

MyViewController.m:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    int toolBarHeight = 44; 
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, [self.view bounds].size.height-toolBarHeight, [self.view bounds].size.width, toolBarHeight)]; 

    UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:nil action:nil]; 
    toolBar.items = @[button]; 

    [self.view addSubview:toolBar]; 

    MyNavigationController *myNav = [[MyNavigationController alloc] init]; 

    [self addChildViewController:myNav]; 
} 
+3

您需要在navigationController中添加viewController。 '[[MyNavigationController alloc] initWithRootViewController:viewController];' – HelmiB

回答

14

添加視圖控制器作爲子視圖控制器是不夠的。您還需要將導航控制器的視圖添加爲容器視圖控制器視圖的子視圖。

[myNav willMoveToParentViewController:self]; 
myNav.view.frame = navFrame; //Set a frame or constraints 
[self.view addSubview:myNav.view]; 
[self addChildViewController:myNav]; 
[myNav didMoveToParentViewController:self]; 

查看the View Controller Programming Guide瞭解更多詳情。

+0

我正在做同樣的事情,但導航控制器的高度和寬度不是按照我設置的框架。原點雖然是正確的。你能幫我嗎? – Sam

+0

通常這與自動佈局有關,而不是視圖控制器嵌套。您可能需要在代碼中添加約束,並確保'translatesAutoresizingMaskIntoConstraints'設置爲NO。如果您使用的是彈簧和支柱,請確保在將視圖添加到父視圖之前添加它們。 – architectpianist

+1

最初我以編程方式創建一個'UINavigationController'並添加它。我通過在IB的幫助下創建Container視圖並將其與我的UINavigationController連接來解決問題。根本沒有添加任何代碼,所有的事情都是通過IB完成的,並且它完美無缺 – Sam

相關問題