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”文件中的内容仍然可见。

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

提前感谢您的帮助。

4

3 回答 3

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];
}

希望这可以帮助。

于 2009-06-12T04:12:31.203 回答
0

您可能想查看 Utility App 示例——它演示了在带有动画的两个视图之间切换以及从父视图添加/删除视图。

于 2009-06-12T04:15:02.773 回答
0

您可能想在主视图中创建一个导航控制器,而不是在调用 showChildView 时将 childviewcontroller 推到它上面。这样你就可以免费获得返回导航按钮

于 2009-06-12T04:31:07.430 回答