有两个视图与一个视图控制器关联的iPhone

有两个视图与一个视图控制器关联的iPhone,iphone,view,views,controller,Iphone,View,Views,Controller,布拉格 我正在努力开发一款具有塞尔达风格的游戏。(即,当电脑触及屏幕边缘时,屏幕将切换到下一个视图,电脑的位置将在相应的边缘重新启动。) 我遇到的问题是,我不希望每个层段都有多个视图控制器,因为所有数据/功能都存在于原始的“LevelView”控制器中。如何在仅切换NIB文件的情况下保留此“LevelView”控制器中的代码?(也就是说,我只希望有AppDelegate、“LevelView”、“ItemView”等类)我不想为游戏中的每个NIB文件重新创建视图控制器 我感谢你能提供的任何帮助!

布拉格

我正在努力开发一款具有塞尔达风格的游戏。(即,当电脑触及屏幕边缘时,屏幕将切换到下一个视图,电脑的位置将在相应的边缘重新启动。)

我遇到的问题是,我不希望每个层段都有多个视图控制器,因为所有数据/功能都存在于原始的“LevelView”控制器中。如何在仅切换NIB文件的情况下保留此“LevelView”控制器中的代码?(也就是说,我只希望有AppDelegate、“LevelView”、“ItemView”等类)我不想为游戏中的每个NIB文件重新创建视图控制器


我感谢你能提供的任何帮助!非常感谢D

创建一个仅包含新视图的NIB文件。将NIB文件中文件所有者的类更改为LevelView控制器的类。要加载新的NIB文件时,请从LevelView控制器调用以下代码:

NSArray *topLevelObjects = [[[NSBundle mainBundle] loadNibNamed:@"Put your nib file name here" owner:self options:nil];
UIView *newLevelView = [[topLevelObjects objectAtIndex:0] retain];
这是干什么的?调用loadNibNamed时,它将返回NIB文件中顶级对象的数组。“文件所有者”和“第一响应者”代理对象不算作顶级对象。因此,您将在NIB文件中获得一个只包含顶级视图的数组。将self传递为文件的所有者,以便在顶级视图的子视图和interface builder中的“文件的所有者”之间建立的任何出口连接都可以连接

如果将顶级视图连接到视图控制器中的插座,则不需要对返回的数组执行任何操作。只要忽略它,它就会自动释放(它会返回给您,保留计数为0)


现在,我认为这样做是个坏主意。我认为有更好的方法来设计你的应用程序。例如,创建描述级别的数据文件(例如属性列表或XML文件)可能比将所有级别放入NIB文件更有意义。但是,如果你真的想这样做,以上内容应该让你开始。

使用
NSUserDefaults
并从那里获得它。

嗯。。。当我只放入代码的上半部分时,它仍然加载第二个视图,甚至不必从数组中调用它。(我把代码放在“ViewDidLoad”方法中,也许这就是为什么?)我喜欢这种能够将笔尖放入数组的方法,这样我就可以为角色应该位于的每个“映射段”调用适当的一个。再说一次,为什么新视图加载时只编写了一半的代码?非常感谢您迄今为止的帮助!:达,明白了!将第二个视图作为“视图”出口连接到视图控制器。我还在您编写的第二行下面添加了“self.view=newLevelView”代码,因为编译器抱怨该变量未使用。再次感谢您的帮助!:DHmm。。。。所以每个视图都包含在它自己的数组中。。。每个数组都可以作为字典中的对象存档。。。然后为字符所在的级别段调用正确的字典对象?这个逻辑正确吗。。。?