Передача данных между классами

Я разработал игру-викторину, и все работает очень хорошо, но есть кое-что, что я хочу улучшить: Моя проблема в том, что у меня есть 3 View Controllers. В первом View Controller пользователь выбирает одиночный или многопользовательский режим.

Второй ViewController - это игра-викторина. Но теперь в третьем ViewController (экран результатов) мне нужно знать, выбрал ли пользователь одиночный или многопользовательский режим.

Я не знаю, как передать это логическое значение из ViewController 1 в ViewController 3.

На данный момент у меня есть логическое значение в каждом ViewController и просто передать эту переменную из View1 в View2, а затем в View3. Но мне не нравится это решение. Есть ли способ, которым я решаю это с делегатами? Или вы знаете другое, лучшее решение?

заранее спасибо

 The iOSDev04 июл. 2012 г., 14:39
Нужен код для этого, затем попросите его, я дам вам
 chris1304 июл. 2012 г., 14:35
@AalokParikh Как я могу использовать делегат приложения для этого?
 The iOSDev04 июл. 2012 г., 14:38
Просто объявите один ivar в appdelegate, а затем, используя переменную appdelegate, вы можете сделать это, например, присвоить эту переменную в VC1 и получить к ней доступ в VC3.
 The iOSDev04 июл. 2012 г., 12:25
Если вам нравится, вы можете использовать appdelgate, чтобы решить эту проблему

Ответы на вопрос(1)

Решение Вопроса

что логическое значение принадлежит коду модели вашего приложения. Это обычная вещь, чтобы сделать вашу модель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;
 chris1304 июл. 2012 г., 13:22
Идеальное решение! Делает именно то, что я хотел сделать. Спасибо! Я заинтересован в этой теме, потому что она действительно базовая, есть ли другие возможности сделать это?

Ваш ответ на вопрос