我正在制作我的第一个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];
}
答案 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帮助我解决了问题,但尝试用谷歌搜索找到最适合你的方法。