2013-07-22 17 views
6

Ho un UIViewController con una UIToolbar (in basso) e voglio aggiungere un UINavigationController con UINavigationBar all'interno. Ma UINavigationController non viene visualizzato.Aggiungi UINavigationController all'interno di UIViewController

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

È necessario aggiungere viewController all'interno di navigationController. '[[MyNavigationController alloc] initWithRootViewController: viewController];' – HelmiB

risposta

14

Aggiunta di un controller di vista come un controller di vista bambino non è sufficiente. È inoltre necessario aggiungere la vista del controller di navigazione come vista secondaria della vista del controller della vista contenitore.

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

Vedere the View Controller Programming Guide per ulteriori dettagli.

+0

Sto facendo la stessa cosa, tuttavia l'altezza e la larghezza del controller Nav non sono come per il frame che ho impostato. Il punto di origine è corretto però. Puoi aiutare? – Sam

+0

Di solito questo è legato al layout automatico, non al nesting del controller della vista. Potrebbe essere necessario aggiungere vincoli nel codice e assicurarsi che "translatesAutoresizingMaskIntoConstraints" sia impostato su NO. Se stai usando molle e montanti, assicurati di aggiungerli prima di aggiungere la vista alla vista genitore. – architectpianist

+1

Inizialmente stavo creando un 'UINavigationController' a livello di codice e aggiungendolo. Ho risolto il problema creando una vista Container con l'aiuto di IB e collegandolo con il mio UINavigationController. Nessun codice aggiunto, tutto fatto tramite IB e funziona perfettamente. – Sam

Problemi correlati