问题描述
|
我是iOS开发的新手,我正在尝试开发一个简单的应用程序,其中的按钮可更改子视图。我有一个底数
RootViewController
,它在init
上正确显示MiddleView
。 MiddleView
有一个标记为“第一”的按钮,该按钮连接(在Interface Builder中)到RootViewController
的-openFirstView
。
这是RootViewController
的-viewDidLoad
中ѭ1的显示方式
MiddleViewController *middleTemp = [[MiddleViewController alloc] initWithNibName:@\"MiddleView\" bundle:nil];
self.middle = middleTemp;
self.middle.rootViewController = self;
[self.view addSubview:middle.view];
[middleTemp release];
所以我有以下ViewControllers
:分别控制MiddleView
和FirstView
的MiddleViewController
和FirstController
,以及在两者之间切换的RootViewController
。
我通过在MiddleViewController
中放置RootViewController
引用并添加
self.middle.rootViewController = self;
到RootViewController
\'s-viewDidLoad
。
-(IBAction)openFirstView:(id)sender{
[middle.view removeFromSuperview];
[self.view addSubview:firstController.view];
}
注意:我已经尝试在-openFirstView
中初始化firstController,并且当它最初没有运行时,我将初始化移至-viewDidLoad
,并通过直接在-viewDidLoad
中显示FirstView证明了它是从笔尖正确初始化的。
在代码的前面,ѭ25被加载到引用中。但是,当我运行代码并单击按钮时,视图中没有任何变化。
我已经做了更多的诊断。我已经发现,在rootViewController
中的-ViewDidLoad
被两次调用,一次是在原始负载上,一次是在按钮的第一次单击上,我不确定为什么。
解决方法
看来您尚未通过以下方法初始化firstView
-(IBAction)openFirstView:(id)sender{
[middle.view removeFromSuperview];
//First initialize the firstController
[self.view addSubview:firstController.view];
}