removefromsuperview和addsubview不改变显示

时间:2011-06-22 04:09:52

标签: ios

我对iOS开发很陌生,我正在尝试开发一个简单的应用程序,其中一个按钮可以更改子视图。我有一个基础RootViewController,可在MiddleView上正确显示initMiddleView只有一个标记为“First”的按钮,该按钮在(Interface Builder中)与RootViewController的{​​{1}}连接。

-openFirstView MiddleView

中显示RootViewController的显示方式
-viewDidLoad

所以我有以下MiddleViewController *middleTemp = [[MiddleViewController alloc] initWithNibName:@"MiddleView" bundle:nil]; self.middle = middleTemp; self.middle.rootViewController = self; [self.view addSubview:middle.view]; [middleTemp release]; ViewControllersMiddleViewController分别控制FirstControllerMiddleView,以及FirstView切换两者之间。

我通过在RootViewController中添加RootViewController引用并添加

来关联此内容
MiddleViewController

self.middle.rootViewController = self; 的{​​{1}}。

RootViewController

注意:我已经尝试在-viewDidLoad内初始化firstController,当它最初没有运行时,我将初始化移动到-(IBAction)openFirstView:(id)sender{ [middle.view removeFromSuperview]; [self.view addSubview:firstController.view]; } 并且已经证明它是通过显示正确地从nib初始化FirstView直接在-openFirstView

其中-viewDidLoad在代码中加载到引用的位置。但是,当我运行代码并单击按钮时,视图中的任何内容都不会更改。

我做了更多的诊断。我特别发现,-viewDidLoad中的firstController被调用了两次,一次是在原始加载时,一次是在第一次点击按钮时,我不确定原因。

1 个答案:

答案 0 :(得分:0)

您似乎没有在以下方法中初始化您的firstView

-(IBAction)openFirstView:(id)sender{
    [middle.view removeFromSuperview];
    //First initialize the firstController
    [self.view addSubview:firstController.view];
}