切换视图

时间:2009-12-03 16:31:51

标签: iphone objective-c views switch-statement

我在iPhone应用程序中切换视图时遇到问题。 我有源代码“开始iPhone 3开发”(http://books.google.com/books?id=TcP2bgESYfgC&printsec=frontcover&dq=beginning+iphone+3+development#v=onepage&q=beginning%20iphone%203%20development&f=false) - 第6章 - 多视图应用程序。

现在我遇到了问题,我想创建一个新视图,通过点击蓝屏“按我”按钮切换。但它没有用。

我将这些行添加到IBAction中,按下蓝色屏幕上的按钮:

StartViewController *startController = [[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil];
self.startViewController = startController;

[self.view insertSubview:startController.view atIndex:1];
[startController release];

但是底部的工具栏不会消失。但我希望这个工具栏消失。

如果我写了

[self.view insertSubview:startController.view atIndex:0];

而不是

[self.view insertSubview:startController.view atIndex:1];

新的xib位于旧的xib之后,所以我看到了两个视图,旧视图和新视图。 为什么?我不明白这一点。

提前多多感谢&最诚挚的问候蒂姆

1 个答案:

答案 0 :(得分:1)

工具栏位于SwitchView中,因此如果要隐藏它,则需要将其隐藏在视图中。您可以为工具栏创建一个IBOutlet,然后调用setHidden:(BOOL)来隐藏它。您需要从BlueViewController执行此操作,因此您需要一种方法来访问您的超级视图(即SwitchView)。在将新视图插入到位之前,您还需要通过调用blueViewController上的removeFromSuperView从超级视图中删除BlueView。它与SwitchViewController中的切换按钮基本相同。

更新: 我查看了你的代码。在BlueViewController.m中,将此用于blueButtonPressed:(id)sender

StartViewController *start = [[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil];
self.startViewController = start;
[start release];
View_SwitcherAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
SwitchViewController *switchController = appDelegate.switchViewController;
switchController.theToolbar.hidden = YES;
[self.view removeFromSuperview];
[self.view insertSubview:startViewController.view atIndex:0];

您还需要为“View_SwitcherAppDelegate.h”和“SwitchViewController.h”添加这两个导入。