2013-07-22 22 views
6

Tôi có một UIViewController với một UIToolbar (ở phía dưới) và tôi muốn thêm một UINavigationController với UINavigationBar bên trong. Nhưng UINavigationController không được hiển thị.Thêm UINavigationController bên trong 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

Bạn cần thêm viewController bên trong navigationController. '[[MyNavigationController alloc] initWithRootViewController: viewController];' – HelmiB

Trả lời

14

Thêm một điều khiển xem như một bộ điều khiển xem đứa trẻ là không đủ. Bạn cũng cần thêm chế độ xem của trình điều khiển điều hướng dưới dạng một chế độ xem con của chế độ xem của trình điều khiển chế độ xem bộ chứa.

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

Xem the View Controller Programming Guide để biết thêm chi tiết.

+0

Tôi đang làm điều tương tự, tuy nhiên chiều cao và chiều rộng của bộ điều khiển Nav không theo khung tôi đặt. Điểm gốc là chính xác mặc dù. Bạn có thể giúp? – Sam

+0

Thông thường, điều này liên quan đến Bố cục tự động, không phải là bộ điều khiển chế độ xem làm tổ. Bạn có thể cần phải thêm các ràng buộc trong mã và đảm bảo 'translatesAutoresizingMaskIntoConstraints' được đặt thành NO. Nếu bạn đang sử dụng lò xo và thanh chống, hãy đảm bảo bạn thêm các cột đó trước khi bạn thêm chế độ xem vào chế độ xem chính. – architectpianist

+1

Ban đầu tôi đã tạo một 'UINavigationController' theo lập trình và thêm nó. Tôi đã giải quyết vấn đề bằng cách tạo ra một khung nhìn Container với sự trợ giúp của IB và kết nối nó với UINavigationController của tôi. Không có mã nào được thêm vào, mọi thứ được thực hiện thông qua IB và nó hoạt động hoàn hảo. – Sam

Các vấn đề liên quan