2013-07-22 11 views
6

UIToolbar(下にあります)を持つUIViewControllerがあり、UINavigationBarをUINavigationBarと共に内部に追加したいと思います。 しかし、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

同じことをやっていますが、Navコントローラの高さと幅は設定したフレームと同じではありません。しかし原点は正しいです。手伝ってくれますか? – Sam

+0

通常、これはオートレイアウトに関連し、ビューコントローラのネストには関係しません。コードに制約を追加し、 'translatesAutoresizingMaskIntoConstraints'がNOに設定されていることを確認する必要があります。スプリングとストラットを使用している場合は、ビューを親ビューに追加する前にそれらを追加してください。 – architectpianist

+1

当初、私はUINavigationControllerをプログラムで作成して追加していました。私は、IBの助けを借りてコンテナビューを作成し、それを私のUINavigationControllerに接続することによって問題を解決しました。コードは一切追加されていません。すべてがIBを通じて行われ、完全に機能します。 – Sam

関連する問題