Я тоже хотел сделать что-то подобное, вот что я нашел:
(SDK 3.1.3)
У меня есть контроллер представления A (принадлежащий контроллеру Nav), который загружает VC B нажатием кнопки:
В AViewController.m
BViewController *bController = [[BViewController alloc] initWithNibName:@"Bnib" bundle:nil];
[self.navigationController pushViewController:bController animated:YES];
[bController release];
Теперь VC B имеет свой интерфейс от Bnib, но когда нажата кнопка, я хочу перейти в «режим редактирования», в котором есть отдельный интерфейс пользователя от другого пера, но я не хочу новый VC для В режиме редактирования я хочу, чтобы новое перо было связано с моим существующим B VC.
Итак, в BViewController.m (в методе нажатия кнопки)
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"EditMode" owner:self options:nil];
UIView *theEditView = [nibObjects objectAtIndex:0];
self.editView = theEditView;
[self.view addSubview:theEditView];
Затем нажмите другую кнопку (для выхода из режима редактирования):
[editView removeFromSuperview];
и я вернулся к своему первоначальному Бнибу.
Это работает нормально, но учтите, что мой EditMode.nib содержит только 1 объект верхнего уровня, объект UIView.
Неважно, установлен ли Владелец файла в этом перо как BViewController или NSObject по умолчанию, НО убедитесь, что для параметра Просмотр выхода в Владельце файла НЕ установлено ничего.
Если это так, то я получаю сбой exc_bad_access и xcode переходит к загрузке 6677 кадров стека
показывающий внутренний метод UIView, который неоднократно вызывается ... так выглядит бесконечный цикл.
(Однако в моем исходном Bnib установлен View Outlet)
Надеюсь, это поможет.