Tôi muốn thêm một tableViewController làm bộ điều khiển chế độ xem con của một containerViewController (được hiển thị bên dưới). Theo số View Controller Programming Guide của Apple, tôi có thể đạt được điều này bằng các dòng mã sau bên trong vùng chứa của tôiViewController:Thêm chế độ xem của trình điều khiển chế độ xem con vào chế độ xem phụ của bộ điều khiển chế độ xem cha mẹ
[self addChildViewController:tableViewController];
[self.view addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
Thực tế, nó hoạt động tốt. Bây giờ vấn đề là tôi không muốn thêm xem tableViewController như là một subview của view gốc của containerViewController. Thay vào đó tôi muốn thêm nó như là một subview của containerView (xem hình ảnh) mà chính nó là một subview của view gốc của containerViewController. Vì vậy, tôi đã thay đổi mã trên như sau:
[self addChildViewController:tableViewController];
[self.contentView addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
Bây giờ khi tôi khởi động ứng dụng nó bị treo ngay lập tức với lỗi này:
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller: should have parent view controller: but actual parent is:'
vấn đề là gì đây? Không thể thêm chế độ xem của childViewController vào một chế độ xem riêng của vùng chứaViewController của nó? Hoặc làm thế nào tôi có thể đạt được điều này mà không có một lỗi trong hệ thống phân cấp bộ điều khiển xem?
Bạn có chắc chắn về điều đó và bạn đã thử nghiệm mã? Tôi đã thử điều đó và nó * làm * tạo sự khác biệt cho dù bạn thêm khung nhìn của childViewController vào khung nhìn gốc của containerViewController hay vào bất kỳ phần phụ nào của nó. – Mischa
@Mischa Mã nguồn bao gồm câu trả lời. Hãy kiểm tra. – Anupdas
+1 cho tableViewController.view.frame = self.contentView.bounds; – onmyway133