2013-04-02 3 views
0

У меня есть 3 VC. A, который отображает вопросы и ответы. B отображается, когда вопрос ошибочно выбран C, как только уровень будет чистым. У меня проблема с A-B & A-C. Вот мой кодДифференциация между двумя контроллерами просмотра

#import "AViewController.h" 
#import "BViewController.h" 
#import "CViewController.h" 

@interface AViewController() 
@end 

Теперь вот код реализации

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
BViewController *incorrect = [segue destinationViewController]; 
incorrect.currentQuestion = self.currentQuestion;} 

// Здесь A посылает информацию B о которой вопрос ответил неправильно, т.е. текущий вопрос

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
rootArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Addition1" ofType:@"plist"]]; 
currentQuestion = -1; 
[self showNextQuestion]; 

} 

-(void) showNextQuestion{ 
currentQuestion++; 
if (currentQuestion <= 3) { 

    int numItems = [rootArray count]; 
    NSMutableArray *question = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *A = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *B = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *C = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *addimage = [NSMutableArray arrayWithCapacity:numItems]; 
    NSMutableArray *Answer = [NSMutableArray arrayWithCapacity:numItems]; 


    for (NSDictionary *itemData in rootArray) { 
     [question addObject:[itemData objectForKey:@"question"]]; 
     [A addObject:[itemData objectForKey:@"A"]]; 
     [B addObject:[itemData objectForKey:@"B"]]; 
     [C addObject:[itemData objectForKey:@"C"]]; 
     [addimage addObject:[itemData objectForKey:@"ImageUse"]]; 
     [Answer addObject:[itemData objectForKey:@"ANS"]]; 

    } 
    self.questionasked.text = question[currentQuestion]; 
    self.answer1.text = A[currentQuestion]; 
    self.answer2.text = B[currentQuestion]; 
    self.answer3.text = C[currentQuestion]; 
    additionImage.image = [UIImage imageNamed:addimage[currentQuestion]]; 
    self.correctAns = Answer[currentQuestion];} 
else{ 
    NSLog(@"End of Array "); 
    [self performSegueWithIdentifier:@"levelpassed" sender:nil]; 

} 
} 

Этот площадь выше здесь, где я столкнулся с проблемой

Когда уровень очищается C VC оказывает эту ошибку, отображающее

[CViewController setCurrentQuestion:]: unrecognized selector sent to instance 0x71cae70 
2013-03-30 21:17:31.264 thefyp[14311:c07] *** Terminating app due to uncaught exception   'NSInvalidArgumentException', reason: '-[CViewController setCurrentQuestion:]: unrecognized selector sent to instance 0x71cae70' 

Я знаю, что вопрос заключается в том, что А найти его трудно провести различие между Segue и пытается отправить данные C о текущем вопросе, когда все, что я хочу чтобы сделать это отображение C, когда закончен A, показывая все вопросы, и данные не передаются, как когда A переходит на B. B & C также является подклассом A. Любая помощь будет полезна

+0

Проверьте, не изменили ли вы свой статус viewController в раскадровке. – Anupdas

+0

Из идентификатора segue? – user2236306

+0

Идентичность CViewController – Anupdas

ответ

1

В методе prepareForSegue проверьте идентификатор segue UIStoryboardSegue.identifier, соответствует ли он переходу на ваш B -VC.

Потому что вызов performSegueWithIdentifier:@"levelPassed" также столкнется с этим методом и там у вас нет B -VC, и поэтому нет currentQuestion.

+0

Это, похоже, сработало. Единственная проблема заключается в том, что текущий вопрос не обновляется вообще в B VC, что означает, что текущий вопрос не обновляется здесь, это код для готовой формы '- (void) prepareForSegue: (UIStoryboardSegue *) segue sender :(id) отправитель { if ([segue.identifier isEqualToString: @ "level1correct"]) { AddLevel1IncorrectViewController * неправильный = [segue destinationViewController]; wrong.currentQuestion = self.currentQuestion;} } ' – user2236306

+0

У меня нет главной проблемы:' currentQuestion' в вашем 'AddLevel1IncorrectViewController' не установлен, когда он отображается? –

+0

Контроллер вида B толкается, когда на вопрос ответили неправильно в A. Пропускает значение текущего вопроса в B, поэтому B может отображать информацию о вопросе все в зависимости от текущего значения Вопроса. Это имеет смысл? – user2236306

Смежные вопросы