帮助在xcode中加载我的iphone游戏级别的字符串

时间:2011-07-20 02:54:53

标签: iphone objective-c xcode ios4

所以我从概念上坚持构建我的应用程序。我读了很多论坛,但我想我需要尝试新的路线。继承人试图做的事情。

我创建了一个游戏,每个级别加载一个不同的字符串供用户玩。现在,关卡的字符串存储在plist中。有5个类别(数组),每个类别包含20个不同的字符串(即20个级别),因此总共有100个级别。

当用户启动游戏时,他们会到达“LevelSelect”视图,其中包含一个选择器。拣货员有两个组成部分。第一个组件是类别列表,第二个组件是该类别中的级别列表。用户选择他们想要播放的级别,然后按“开始”按钮调出“GamePlay”视图(一组完全不同的.h,.m和.xib文件)。

我的问题: 我不知道如何让所选级别出现在Gameplay课程的屏幕上。我拥有所有机器游戏工作,所以如果我在viewDidLoad中创建一个字符串,游戏似乎工作正常,但我希望当该级别被选中并且用户按下start时,该级别的字符串会进入屏幕。

我的问题:如何将字符串从LevelSelect传递给GamePlay?

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,LevelSelectGamePlay都是UIViewController的子类。用户通过LevelSelect视图控制器选择他想要播放的关卡。听起来您已经知道如何显示GamePlay视图控制器的视图。您只是不知道在显示之前如何将字符串传递给该视图控制器。

当用户按下开始按钮时,我假设您当前正在构建并向您的GamePlay视图控制器显示如下代码:

- (IBAction)startButtonPressed:(id)sender {
    GamePlay *gamePlayViewController = [[[GamePlay alloc] initWithNibName:nil bundle:nil] autorelease];
    [self presentModalViewController:gamePlayViewController animated:NO];
}

您的目标是为GamePlay视图控制器提供一个levelString属性,您可以这样设置:

- (IBAction)startButtonPressed:(id)sender {
    GamePlay *gamePlayViewController = [[[GamePlay alloc] initWithNibName:nil bundle:nil] autorelease];
    gamePlay.levelString = self.selectedLevelString;
    [self presentModalViewController:gamePlayViewController animated:NO];
}

其中self.selectedLevelString是用户在选择器中选择的级别的字符串。

要实现这一点,您需要在GamePlay.h文件中声明属性,如下所示:

@interface GamePlay : UIViewController {
}
@property (nonatomic, retain) NSString *levelString;
@end

在你的GamePlay.m文件中,你需要合成这个属性并在你的dealloc方法中释放它,如下所示:

@implementation GamePlay
@synthesize levelString;

- (void)dealloc {
    self.levelString = nil;
    [super dealloc];
}
@end

这为您的GamePlay控制器提供了levelString属性,您可以从LevelSelect视图控制器设置该属性,如上所示。然后在GamePlay视图控制器的任何方法中,您都可以使用self.levelString访问此字符串。

顺便说一句,我上面的startButtonPressed:示例代码假定您的LevelSelect视图控制器上有一个名为selectedLevelString的属性。您可以声明此属性的方式与我们在levelString上声明GamePlay属性的方式完全相同。当用户选择pickerView:didSelectRow:inComponent:中的级别时,您可以根据需要设置此字符串。