2009-06-12 47 views
0

我对Obj-C和学习iphone开发很陌生。 我的问题是如何从应用程序委托添加子视图。 可以说我从“applicationDidFinishLaunching”方法中添加了名为“MainView”的子视图。如何从主视图加载子视图?

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

MainViewController *aViewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil]; 
self.mainViewController = aViewController; 
[aViewController release]; 

[window addSubview:mainViewController.view]; 
// Override point for customization after application launch 
[window makeKeyAndVisible]; 

}

“MainView.xib” 文件上有一个按钮,以显示其子视图。当按钮被点击时,它调用“showChildView”方法。

- (IBAction)showChildView:(id)sender { 
    if (self.childViewController == nil) { 
     ChildViewController *childController = [[ChildViewController alloc] initWithNibName:@"ChildView" bundle:nil]; 
     self.childViewController = childController; 
     [childController release]; 
    } 

    [self.view insertSubview:childViewController.view atIndex:0]; 
} 

从这段代码,当应用程序启动时,它显示一个按钮“MainView”。但是,当我点击按钮时,该按钮仍然可以看到以及“ChildView.xib”文件中的内容。

当我按下按钮并仅显示“ChildView”的内容时,如何隐藏“MainView”?

感谢您的帮助提前。

回答

0

好,你必须先删除原来的视图,插入新子视图之前,做这种方式

- (IBAction)showChildView:(id)sender { 
    if (self.childViewController == nil) { 
     ChildViewController *childController = [[ChildViewController alloc] initWithNibName:@"ChildView" bundle:nil]; 
     self.childViewController    = childController; 
     [childController release]; 
    } 
    [self.mainViewControlle.view removeFromSuperView]; 
    [self.view insertSubview:childViewController.view atIndex:0]; 
} 

希望这有助于。

+0

由于这个函数,“showChildView:”在“MainViewController.m”中定义,将“[self.mainViewController.view removeFromSuperView]”的消息工作?当我使用这行代码构建项目时,它会产生编译器错误:“请求成员'mainViewController'的东西不在结构或联合中。” 不知道这里发生了什么? – sungl 2009-06-12 05:51:00

+0

MyAppDelegate * appDelegate =(MyAppDelegate *)[[UIApplication sharedApplication] delegate]; MainViewController * main =(MainViewController *)[appDelegate mainViewController]; UIWindow * window =(UIWindow *)[appDelegate window]; [main.view removeFromSuperView]; [window addSubview:childViewController.view]; – Zteeth 2009-06-14 03:46:25

0

您可能想查看实用程序应用程序示例 - 它演示了使用动画在两个视图之间切换以及从父视图添加/删除视图。

+0

谢谢你的提示!它看起来非常有帮助。 :) – sungl 2009-06-12 06:00:12

0

你可能想要在主视图中创建一个导航控制器,并在调用showChildView时将childviewcontroller推到它上面。你会得到这个免费的后退导航按钮

+0

谢谢。这是另一个好主意! – sungl 2009-06-12 06:00:55

相关问题