2013-07-22 12 views
6

Mam UIViewController z UIToolbar (na dole) i chcę dodać UINavigationController z UINavigationBar wewnątrz. Ale UINavigationController nie jest wyświetlany.Dodaj UINavigationController wewnątrz 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

Musisz dodać viewController wewnątrz navigationController. '[[MyNavigationController alloc] initWithRootViewController: viewController];' – HelmiB

Odpowiedz

14

Dodawanie kontrolera widoku za pomocą kontrolera widoku dziecko nie wystarczy. Należy również dodać widok kontrolera nawigacyjnego jako podzbiór widoku kontrolera widoku kontenera.

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

Aby uzyskać więcej informacji, zobacz the View Controller Programming Guide.

+0

Robię to samo, jednak wysokość i szerokość kontrolera Nav nie jest zgodna z ramą, którą ustawiłem. Punkt początkowy jest jednak poprawny. Możesz pomóc? – Sam

+0

Zwykle jest to związane z automatycznym układem, a nie z zagnieżdżaniem kontrolera widoku. Być może będziesz musiał dodać ograniczenia w kodzie i upewnij się, że 'translatesAutoresizingMaskIntoConstraints' jest ustawione na NIE. Jeśli używasz sprężyn i rozporek, upewnij się, że dodać je, zanim dodasz widok do widoku rodzica. – architectpianist

+1

Początkowo programistycznie tworzyłem 'UINavigationController' i dodawałem go. Rozwiązałem problem, tworząc widok kontenera za pomocą IB i łącząc go z moim UINavigationController. W ogóle nie dodawano kodu, wszystko odbywało się za pośrednictwem IB i działało idealnie. – Sam

Powiązane problemy