2015-11-15 2 views
0

В моем приложении я решил изменить свой segue на страницу Show Details seegue на доске объявлений, поскольку я хотел, чтобы эффект раскадровки шел из нижней части экрана, и поэтому мне нужно было каким-то образом вернуть пользователя, поэтому я вставил навигацию в вид назначения. Однако теперь я получаю:Почему вставка навигации создает непризнанный селектор?

Нагрузочного приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [UINavigationController setImageData]: непризнанный селектор направил к экземпляру 0x7fbdfa887600'

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Make sure your segue name in storyboard is the same as this line 
    if ([[segue identifier] isEqualToString:@"infoSegue"]) 
    { 
     // Get reference to the destination view controller 
     DetailsViewController *vc = [segue destinationViewController]; 

     // Pass any objects to the view controller here, like... 
     int num = (int)[self getIndexNum]; 

     NSString *dictionaryKey = _results[num]; 
     Image *image = _dataDictionary[dictionaryKey]; 
     vc.imageData = image; 
     NSLog(@"Vendor ID %@",image.vendorId); 

    } 
} 

Имеет навигацию стать родительский вид или что-то еще?

+0

Что такое DetailsVIewCOntroller? контроллер uiviewcontroller или контроллер навигации? –

+1

imageData - это вид NSData или изображения? –

ответ

1

, если ваш контроллер вида назначения является контроллером навигации, тогда вы не должны устанавливать изображение на навигационном контроллере! Также как @vadian из ответа сказал, вам нужно указать тип возврата uiviewcontroller !!!

UINavigationController *navController = [segue destinationViewController]; 
DetailsViewController *viewController = (DetailsViewController *)([navController viewControllers][0]); 
[viewController setimageData:image]; 

Удостоверяются, что imageData имеет вид UIImage. Если это тип NSData, вам может потребоваться:

[viewController setimageData:[UIImage imageWithData:imageData]]; 
2

Поскольку destinationViewController возвращает общий тип UIViewController, вам необходимо сделать литье.

DetailsViewController *vc = (DetailsViewController *)[segue destinationViewController]; 

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

  • Нет связанных вопросов^_^