2014-07-24 2 views
0

У меня есть эта странная проблема, когда я не могу установить свойства для вида назначения. Я сделал это тысячу раз. Это код:prapareForSegue не может установить любое свойство для контроллера назначения

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    if([segue.identifier isEqualToString:@"InboxSegue"]){ 
     InboxViewController *controller = (InboxViewController *)segue.destinationViewController; 
     controller.ERA = ERA; 

    } 

} 

Я инициализируются все свойства в обоих контроллера. Я отлаживал, и вся переменная имела значения, а не ноль.

Ошибка: ReadLater [43713: 60b] * Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [UINavigationController setERA]: непризнанный селектор направил к экземпляру 0x10976e760'

+0

может у опубликовать полный код? мы хотим видеть, что ваша ERA. –

+0

В firstviewcontroller, где u определяет ERA –

+0

Я разместил 1-й контроллер. Спасибо. – sermilion

ответ

2

Причина ошибки говорит о том, что ваш контроллер вида segue на самом деле является навигационным контроллером.

Таким образом, вы должны достичь вашего контроллера вида в пределах его навигации стека, как это:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    if([segue.identifier isEqualToString:@"InboxSegue"]){ 

     UINavigationController * navigationController = (UINavigationController *)[segue destinationViewController]; 
     InboxViewController * inboxViewController = [[navigationController viewControllers] objectAtIndex:0]; 
     inboxViewController.ERA = ERA; 

    } 

} 
+0

Большое вам спасибо. Моя проблема в том, что я просто не знал, что существует разница между контроллером навигации и обычным для segues. Я получил минус голосование за этот вопрос. Это действительно так плохой вопрос? (если это так, я бы больше не писал) – sermilion

+0

Обратите внимание, что все, что вы подключаете к концу вашего segue, всегда является вашим контроллером представления. Это может быть контроллер навигации, контроллер панели вкладок или любой другой тип контроллера вида. Видимый контроллер просмотра - это еще одна история, зависящая от родительского контроллера. Ссылка на класс содержит подробную информацию о том, как вы получаете доступ к своим элементам для любого типа. – Desdenova

+1

Хорошо, я заплачу больше времени, чтобы посмотреть ссылки с этого момента. Ура! – sermilion

0

Check Если вы правильно присвоили «InboxSegue» конкретному контроллеру. Это происходит, когда segue.destinationViewController дает некоторый другой контроллер, а затем ожидаемый

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