2015-06-13 3 views
0

У меня возникает следующая ошибка при попытке установить строку в публичном свойстве в режиме подготовки к segue. Любая идея почему?Ошибка при настройке свойства в prepareForSegue:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController setQuestionObjectId:]: unrecognized selector sent to instance 0x7fa713562b40' 

Код:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([[segue identifier] isEqualToString:@"postSegue"]) { 
    CommentsViewControllerNew *commentsVC = (CommentsViewControllerNew *)[segue destinationViewController]; 
    commentsVC.hidesBottomBarWhenPushed = YES; 
    PFObject * question=[self.brightenArray objectAtIndex:self.indexPathOfClickedpost.row]; 
    commentsVC.questionObjectId=question.objectId; 
    NSLog(@"%@",[self.Array objectAtIndex:self.indexPathOfClickedpost.row]); 
//  commentsVC.question = question; 
+0

Пожалуйста, покажите свой код 'CommentsViewControllerNew', чтобы мы могли увидеть ваш вопрос @property. –

ответ

0

Как вы уже собрались, это вызвано тем, что вы отправляете сообщение setQuestionObjectId: к классу, который не признает, что сообщение. Например. если вы отправите сообщение reloadData (from UITableView) на номер NSString, вы получите аналогичное исключение. Это связано с тем, что NSString не реализует (имеет метод) reloadData.

Эта ошибка часто возникает в методе prepareForSegue:sender:, потому что вы производите UIViewController в пользовательский подкласс (в данном случае CommentsViewControllerNew). Типажей происходит на этой линии:

CommentsViewControllerNew *commentsVC = (CommentsViewControllerNew *)[segue destinationViewController]; 

Вы сообщаете, компилятор: Да, я знаю, что вы думаете, что это UIViewController, но это на самом деле CommentsViewControllerNew. Крушение приходит потому, что в этом случае компилятор является правильным, он являетсяUIViewController и UIViewController не имеет метод или свойство имени с именем questionObjectID

После этого долгого объяснения ... исправление идти к вашему построителю интерфейса, выберите соответствующий контроллер представления и установите его класс как CommentsViewControllerNew.

ПРИМЕЧАНИЕ. Если вы не понимаете или не знакомы ни с одним из того, о чем я говорю, я предлагаю вам прочитать или сделать несколько учебников. На YouTube множество загрузок.

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