在类之间传递数据

时间:2012-07-04 10:00:08

标签: objective-c cocoa

我开发了一个问答游戏,一切都很好,但有一件事我想改进: 我的问题是我有3个视图控制器。在第一个视图控制器中,用户选择单人或多人模式。

第二个ViewController是测验游戏。 但现在在第三个ViewController(结果屏幕)中,我需要知道用户是选择单人还是多人模式。

我不知道如何将这个布尔值从ViewController 1传递给ViewController 3。

目前我在每个ViewController中都有一个布尔值,只是将这个变量从View1传递给View2然后传递给View3。但我不喜欢这个解决方案。有没有办法让我与代表解决这个问题?或者你知道其他任何更好的解决方案吗?

提前致谢

1 个答案:

答案 0 :(得分:6)

模型 - 视图 - 控制器方法表明布尔值属于应用程序的模型代码。将模型设为 singleton 是很常见的事情:

QuizModel.h

@interface QuizModel : NSObject
@property (nonatomic, readwrite) BOOL isMultiplayer;
-(id)init;
+(QuizModel*)instance;
@end

QuizModel.m

static QuizModel* inst = nil;

@implementation QuizModel
@synthesize isMultiplayer;
-(id)init {
    if(self=[super init]) {
        self.isMultiplayer = NO;
    }
    return self;
}
+(QuizModel*)instance {
    if (!inst) inst = [[QuizModel alloc] init];
    return inst;
}
@end

现在您可以在控制器代码中使用布尔值:include "QuizModel.h",然后写

if ([QuizModel instance].isMultiplayer)

[QuizModel instance].isMultiplayer = YES;