Đây là cách tôi đã thực hiện:
Lưu ý rằng hiện tại trong iOs 5 họ đã có vùng chứa containerView. Đối với tất cả tôi biết nó không hiển thị trong XIB. Tuy nhiên, bản chất là như nhau.
Tạo chế độ xem và gọi là ContainerView. Nếu bạn thực hiện theo kiểu XIB, bạn cần thiết lập một số thứ theo cách thủ công như cấp phát] init con Xem bộ điều khiển, thêm nó vào phần tử cha và thêm khung nhìn vào khung nhìn của cha mẹ.
Nếu bạn làm điều đó trong bảng phân cảnh, bạn có thể liên kết từ khung nhìn đó đến một bộ điều khiển khác và tạo một khoảng cách nhúng. Tuy nhiên, nó chỉ hoạt động cho một bộ điều khiển xem và bạn cần phải tương tự cho phần còn lại.
Sau đó, tôi làm điều này:
- (void)viewDidLoad
{
[super viewDidLoad];
PO(self.childViewControllers);
BGCRListBusinessViewController * theListController= [[BGCRListBusinessViewController alloc]init];
self.listBusinessViewController = theListController;
[self addChildViewController:theListController];
...
for (UIViewController * child in self.childViewControllers) {
child.view.frame=self.ContainerView.bounds;
}
//PO(self.ChangeFilter.BackgroundImage);
//PO
//self.ChangeFilter setBackgroundImage:[UIImage imageNamed:@] forState:<#(UIControlState)#>
[self.ContainerView addSubview:self.listBusinessViewController.view];// initialize'
}
Tada ....
Bây giờ nhìn vào đó bộ sưu tập childViewControllers. Đó là một trong những mới trong IOS5. Tất cả những điều đó, là để vượt qua viewWillAppear, viewWillDisappear, ViewDidThisandThat và ViewIamRotatingWillOrDidorWhatever. Nó làm nhiều hơn một chút nhưng tôi không quan tâm.
Vì vậy, nếu bạn nhắm đến IOS4, bạn chỉ có thể gọi trực tiếp tất cả những người đó trong chế độ xem cha mẹWillAppear, viewWillDisappear, ViewDidThisandThat và ViewIamRotatingWillOrDidorWhatever tương ứng.
Trong triển khai của mình, tôi có một con trỏ tới bất kỳ viewController nào có chế độ xem bên trong ContainerView. Các khung nhìn như vậy sẽ nhận được tất cả các hàm ViewWillorDidWhatever được gọi đó.
Bộ điều khiển gốc của tôi cũng có nhiều con. Hầu hết trong số đó không được nhìn thấy. Không vấn đề gì. Trẻ em không được nhìn thấy sẽ không nhận được ViewWillorDidWhatever.
Điều này được thực hiện tự động bởi childViewControllers. Nếu bạn nhắm vào IOS4, hãy xem qua tất cả các con bạn xem chế độ xem của trình điều khiển và xem có bất kỳ hiển thị nào trong số chúng được hiển thị hay không. Nếu được hiển thị, hãy gọi ViewWillorDidWhatever của họ.
Ngoài ra còn có một số đại biểu bổ sung thông báo liệu một đứa trẻ có được thêm vào cha mẹ hay không. Tôi đã không sử dụng nó và không biết những gì nó được sử dụng cho.
Cuối cùng, một số chế độ xem có thể muốn bị loại bỏ. Bố mẹ nên làm điều đó. Tôi thực hiện điều đó bằng thông báo. Nhưng đó là vượt ra ngoài câu hỏi rồi. IOS đã có chức năng như vậy cho modalViewController.