在我正在创建的应用程序中,有许多页面看起来几乎相同,但有些部分不同。为了处理这种情况,我创建了一个包含子视图的容器控制器。我希望这个子视图由另一个控制器(及其关联的 nib)的内容填充,我将根据上下文根据需要动态创建它。
我在某处有以下方法
- (void) someAction {
UIViewController* contentController = [[MyContentController alloc] init];
UIViewController* containerController = [[MyContainerController alloc] initWithContentController:contentController];
[navigationController pushViewController:pageController animated:YES];
[contentController release];
[containerController release];
}
在 MyContainerController.mi 中将控制器保留在一个属性中
- (id)initWithContentController:(UIViewController *)aContentController {
if ((self = [super initWithNibName:@"MyContainerController" bundle:nil])) {
contentController = aContentController;
}
return self;
}
稍后在 viewDidLoad 我执行以下操作
- (void)viewDidLoad {
[super viewDidLoad];
[contentViewContainer addSubview:contentController.view];
}
contentViewContainer 是应该保存页面特定信息的视图。不幸的是,EXC_BAD_ACCESS 失败了。有趣的是,如果我从 viewDidLoad 中分配和初始化内容控制器,一切正常。似乎我无法通过我从另一个地方分配的控制器。任何人都可以提供帮助。