Вот как я это сделал:
Обратите внимание, что теперь в iOs 5 у них уже есть containerView.Насколько я знаю, это не отображается в XIB.Однако суть та же.
Создайте представление и вызовите это ContainerView.Если вы делаете это в стиле XIB, вам нужно вручную установить некоторые вещи, такие как alloc] init дочернего контроллера View, добавить его к родительскому и добавить представление к представлению parent.
Если вы делаете это в раскадровке,вы можете связать этот контейнер с другим контроллером и создать код для вставки.Тем не менее, он работает только для одного контроллера представления и вам нужно то же самое для остальных.
Затем я делаю это:
- (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'
}
Тада ....
Теперь посмотрите на эту коллекцию childViewControllers.Этот новый в IOS5.Все, что он делает, это передает viewWillAppear, viewWillDisappear, ViewDidThisandThat и ViewIamRotatingWillOrDidorWh независимо.Это немного больше, но мне все равно.
Так что, если вы стремитесь к IOS4, вы можете просто вызвать все это непосредственно в родительском viewWillAppear, viewWillDisappear, ViewDidThisandThat и ViewIamRotatingWillOrDidorWh независимо от этого.
В моей реализации у меня есть указатель на тот вид viewController, который имеет представление внутри ContainerView.Такие представления получат все те функции ViewWillorDidW, которые были вызваны.
Мой родительский контроллер также имеет несколько дочерних элементов.Большинство из которых не видел.Нет проблем.Дочерние объекты, которые не видны, не получат ViewWillorDidWh независимо.
Это выполняется автоматически childViewControllers.Если вы стремитесь к IOS4, просмотрите все контроллеры представления ваших детей и посмотрите, отображается ли какой-либо из них.Если отображается, вызовите их ViewWillorDidWhwhat.
Существует также дополнительный делегат, который уведомляет, добавлен ли потомок к родителю или что-то еще.Я этим не пользовался и не знаю, для чего он используется.
Наконец, какое-то мнение может захотеть отклониться.Родители должны это сделать.Я делаю это с уведомлением.Но это уже не вопрос.IOS уже имеет такую функцию для modalViewController.