在iOS中的视图之间切换

时间:2011-08-03 15:52:41

标签: ios ipad views

我正在制作我的第一个iOS应用程序,它适用于iPad。这是一个记忆游戏。它有封面页面,有几个选项,根据您选择的选项,它会向您发送不同的页面/视图。在整个应用程序中,用户将浏览不同的页面/视图。应用程序的整个界面将是定制的,所以我想要导航栏或任何东西。我正在使用xCode 3.2.5。我在界面构建器中创建了视图。我已将封面页附加到应用程序,因此在启动页面后会显示。

如何在视图之间切换?

感谢你给我的任何帮助。

编辑1:

以下是我认为相关的一些代码

这是AppDelegate.m文件,我省略了我没有编辑的方法

@synthesize coverController=_coverController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

// Override point for customization after application launch.
cover *aCoverController = [[cover alloc] initWithNibName:@"cover" bundle:nil];
self.coverController = aCoverController;
// Or, instead of the line above:
// [self setcover:aCoverController];
[aCoverController release];

self.window.rootViewController = self.coverController;
[self.window makeKeyAndVisible];

return YES;
}

- (void)dealloc {

[managedObjectContext_ release];
[managedObjectModel_ release];
[persistentStoreCoordinator_ release];
[_coverController release];

[window release];
[super dealloc];
}

2 个答案:

答案 0 :(得分:2)

确定。第一,你可以更清楚你想要什么。

从我得到的,你不是想要导入/导出控制器,只是为RootViewController准备了很少的视图,然后你想在它们之间切换。

当您有顺序的视图流时,使用导航控制器,如从view1'导向'view2',依此类推。例如 - 联系人书籍 - >联系人详细信息 - > editContact - >等...... ..

但是感觉,在你的情况下,视图/页面是分开的并且没有任何连接,所以不会有任何顺序流,而是随机流量的说view1 - > view5 - > view2-- > ..

如果是这种情况,如果你已经构建了视图,你只需要将它们与parentController(在你的情况下为coverController)连接起来。

最简单的方法是 - 假设您有3个视图,view1 view2 view3,每个视图都有一个或多个按钮来切换黑白视图。 1种方法是在每个视图中都有一个coverController的引用。有更多优雅的方法,但这1将是最容易理解和实现的。

所以,在view1.h(添加这些):

import "cover.h"

@class cover;

@interface view1 : UIView {

cover *coverController;
}

@property(nonatomic, assign)cover *coverController;

@end

在cover.h中,添加

import "view1.h"

@class view1;

@interface cover : UIViewController{

 IBOutlet view1 *firstView;
}

@property(nonatomic, retain) IBOutlet view1 *firstView;

@end

最后在cover.m中,添加

@implementation cover

@synthesize view1;

并在cover.m中的'viewDidLoad'方法中添加2行

self.view1.frame = CGRectMake(0,0,768,1024); //set whatever frame you want

self.view1.coverController = self;   //concept of reference-paring  

完成了。

在view1的view1ButtonPressed方法中 -

-(IBAction)view1ButtonPressed{

 // remove the current view from the superview

 [self removeFromSuperView];

 //go to superView, to load anotherview

 [coverController view1ButtonWasPressed];

}

在cover.m中:

-(void)view1ButtonWasPressed{

 //after doing the same process for view2

 [self.view addSubview:view2];
}

如果您已经建立了正确的连接,那么在您的nib文件中,您将实现您的目标。

概念很简单,我们正在做的是 - 点击按钮,我们从superview中删除当前视图,转到超级​​视图本身(这只是控制器的视图),并添加其他视图作为子视图我们的选择。

只有一个控制器和许多视图,我们正在转换这些视图。

答案 1 :(得分:0)

您应该使用导航控制器,这是构建具有多个视图的应用程序的最简单方法。没有任何东西可以说你必须显示导航栏,你可以创建自定义按钮来推动和弹出视图的堆栈。

我一直在玩不同的方式,这是不值得的。我强烈推荐导航控制器。

This tutorial帮助我解决了问题,但尝试用谷歌搜索找到最适合你的方法。