如何从主视图加载子视图?

时间:2009-06-12 04:04:26

标签: iphone objective-c uiwebview

我是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”?

提前感谢您的帮助。

3 个答案:

答案 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推到它上面。您可以免费获得后退导航按钮