4

私はクイズゲームを開発しましたが、すべてが非常にうまく機能していますが、改善したいことがあります。私の問題は、3つのビューコントローラーがあることです。最初のViewControllerで、ユーザーはシングルまたはマルチプレイヤーモードを選択します。

2番目のViewControllerはクイズゲームです。しかし、3番目のViewController(結果画面)で、ユーザーがシングルプレイヤーモードとマルチプレイヤーモードのどちらを選択したかを知る必要があります。

このブール値をViewController1からViewController3に渡す方法がわかりません。

現在、すべてのViewControllerにブール値があり、この変数をView1からView2、次にView3に渡すだけです。しかし、私はこの解決策が好きではありません。デリゲートでこれを解決する方法はありますか?または、他のより良い解決策を知っていますか?

前もって感謝します

4

1 に答える 1

6

Model-View-Controller アプローチは、ブール値がアプリケーションのモデル コードに属していることを示唆しています。モデルを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"、および write

if ([QuizModel instance].isMultiplayer)

また

[QuizModel instance].isMultiplayer = YES;
于 2012-07-04T10:12:34.027 に答える