2013-03-30 5 views
0

Я не могу понять, почему эта ошибка происходит. Я был на нем уже несколько дней. У меня есть VC, называемый ADViewController, это отображает вопрос из файла plist. Он имеет свой собственный класс и является подклассом ViewController, а не UIViewController (это, возможно, стоит упомянуть). Мне сложно выполнить Segue «LevelCleared», который является его собственным классом ClearedAd1ViewController. Прошу прощения, если это глупый вопрос, но я не могу понять это сам. Это ADViewController.mСбой программы по неизвестной причине

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

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

    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:@"LevelCleared" sender:nil]; 

} 
} 

Я напишу сообщение NSLog на консоль, но не будет выполнять SEGUE. Когда он достигает 3-й элемент в массиве Я хочу, чтобы выполнить SEGUE, но я получаю эту ошибку

2013-03-30 16:37:15.912 thefyp[1268:c07] End of Array 
2013-03-30 16:37:15.915 thefyp[1268:c07] -[ClearedAd1ViewController setCurrentQuestion:]: unrecognized selector sent to instance 0x757fcd0 
2013-03-30 16:37:15.916 thefyp[1268:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ClearedAd1ViewController setCurrentQuestion:]: unrecognized selector sent to instance 0x757fcd0' 
***First throw call stack: 
(0x1cb8012 0x10f5e7e 0x1d434bd 0x1ca7bbc 0x1ca794e 0x834b 0x481b87 0x11bdd2 0x8f87 0x9050 0x1109705 0x3d2c0 0x3d258 0xfe021 0xfe57f 0xfd6e8 0x6ccef 0x6cf02 0x4ad4a 0x3c698 0x1c13df9 0x1c13ad0 0x1c2dbf5 0x1c2d962 0x1c5ebb6 0x1c5df44 0x1c5de1b 0x1c127e3 0x1c12668 0x39ffc 0x2a8d 0x29b5 0x1) 
libc++abi.dylib: terminate called throwing an exception 

(lldb)

+0

У вас все в порядке. Я не буду впадать в это в этом посте. 'ClearedAd1ViewController' не реализует' setCurrentQuestion: '. – duci9y

+0

Можете ли вы уточнить? – Sfocker

+0

Проверьте файл 'ClearedAd1ViewController.m'. Метод 'setCurrentQuestion:' не реализован. – duci9y

ответ

0

Я думаю, что вы ужасно смущен, я думаю, что вы пытаетесь сказать, что ADViewController является подклассом UIView, а не классом ViewController. В этом случае

[self performSegueWithIdentifier:@"LevelCleared" sender:nil]; 

не может быть вызван как метод контроллера вида, а не метод UIView. Вот почему ошибка говорит о том, что селектор распознается.

Поэтому вам необходимо реализовать свой код в контроллере UIView, чтобы исправить эту проблему.

+0

Большое спасибо за ваш ответ. Это ADViewController.h '@interface LevelAViewController: ViewController' Так должно это читать ' @interface LevelAViewController: UIViewController' – Sfocker

+0

Да, это должно быть. Я бы рекомендовал создать новый класс типа UIViewController, а затем разместить там свой код. Удостоверьтесь, что все ошибки, связанные с перемещением вашего кода, исправлены, а затем, наконец, убедитесь, что вы правильно установили идентификатор как LevelCleared в построителе интерфейса. – CreativeAbyss

+0

Wow он по-прежнему не работает. «Завершение приложения из-за неотображенного исключения» NSInvalidArgumentException », причина: '- [UIViewController setCurrentQuestion:]: непризнанный селектор, отправленный в экземпляр 0x71c4e90'' – Sfocker