我是Obj-C的新手并且学习iphone开发。 我的问题是如何从app delegate添加子视图。 假设我从“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 :(得分: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];
}
希望这有帮助。
答案 1 :(得分:0)
您可能想要查看Utility App示例 - 它演示了使用动画在两个视图之间切换以及从父视图添加/删除视图。
答案 2 :(得分:0)
你可能想在主视图中创建一个导航控制器,而不是在调用showChildView时将childviewcontroller推到它上面。您可以免费获得后退导航按钮