Когда я использую prepareForSegue для передачи значения в контроллер цели, возникают некоторые проблемы.

Во-первых, я использую раскадровку для создания двух uiviewcontroller: firstviewcontroller и secondviewcontroller. И с помощью xcode встроить uinavigationcontroller в secondviewcontroller(редактор --> встроить в --> контроллер навигации). Затем я также хочу использовать переход для передачи значения от первого ко второму. есть код:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([segue.identifier isEqualToString:@"passValue"])
    {
        secondViewController *saveViewController = [segue destinationViewController];
        [saveViewController setValue:data forKey:@"data"];
    }
}

Но появится сообщение об ошибке, в журнале: Приложение завершается из-за необработанного исключения «NSUnknownKeyException», причина: «[ setValue: forUndefinedKey:]: этот класс не соответствует кодированию значения ключа для данных ключа. '

Однако, когда я удаляю навигационный контроллер, который я использую Xcode, чтобы вставить его и определить панель навигации по коду, эта проблема исчезнет. Я предполагаю, что причина в том, что реальный targetViewController — это navigationcontroller, а не secondviewcontroller. Итак, если я хочу зарезервировать навигационный контроллер, встроенный в Xcode, как решить эту проблему?


person user1361168    schedule 20.08.2012    source источник


Ответы (1)


Вы правы, destinationViewController будет UINavigationController, в который у вас встроен secondViewController. Можете попробовать следующее:

secondViewController *saveViewController = [[segue destinationViewController] topViewController];
person Johnnywho    schedule 20.08.2012