2011-06-22 34 views
2

我很新的iOS开发,我试图开发一个简单的应用程序,其中按钮更改子视图。我有一个基地RootViewController,它在init上正确显示MiddleViewMiddleView有一个单独的按钮,标记为“第一个”,它连接到(在Interface Builder中)到RootViewController-openFirstViewremovefromsuperview和addsubview不会改变显示

下面是如何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]; 

所以我有以下ViewControllers S:MiddleViewControllerFirstController分别控制MiddleViewFirstViewRootViewController这两者之间切换。

我已经放置在MiddleViewController一个RootViewController参考,并添加

self.middle.rootViewController = self; 

RootViewController-viewDidLoad连接这一点。

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

注:我试过内-openFirstView初始化firstController,当它最初并没有跑,我搬到了初始化-viewDidLoad,并已证明,它是从笔尖正确地通过直接在-viewDidLoad显示的firstView初始化

其中firstController加载到代码中的引用。但是,当我运行代码并单击该按钮时,视图中的任何内容都不会改变。

我已经做了一些更多的诊断。我发现特定的-ViewDidLoadrootViewController被调用两次,一次在原始加载和一次按钮的第一次点击,我不确定为什么。

+0

我很困惑。你能列出你拥有的'UIViewController's以及它们控制的是什么'UIView'?另外,请在“RootViewController”中显示'MiddleView'的方式。 – PengOne

+0

对不起,我已经更新了。 – Tas

回答

0

好像你还没有inialize您的firstView在下面的方法

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

我尝试初始化'-openFirstView'中的'firstController',然后将初始化移动到'-viewDidLoad',以查看是否有问题。无论如何,缺乏初始化并不是问题。我会添加一个编辑来清楚说明。 – Tas