0

Это мой код seague другого UINavigationController:Seague to NavigationController не работает на реальном устройстве, но не на симуляторе?

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    static NSString *segueIdentifier = @"ShowDetails"; 

    if ([[segue identifier] isEqualToString:segueIdentifier]) { 

     UINavigationController *navigationController = [segue destinationViewController]; 

     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 


     DetailViewController *detailViewController = (DetailViewController *)navigationController.topViewController; 

     if ([detailViewController respondsToSelector:@selector(setGameID:)]) { 
      detailViewController.selectedGameIdNumber = [NSString stringWithFormat: @"%ld", (long)indexPath.row]; 
      detailViewController.selectedSection = [self.sectionNames objectAtIndex:indexPath.section]; 
     } 
    } 
} 

При работе с тренажером все работает отлично. Нет ошибок и данные передаются следующему навигационному контроллеру. Однако теперь, когда я пытаюсь его с реальным устройством он не на этот код:

DetailViewController *detailViewController = (DetailViewController *)navigationController.topViewController; 

с ошибкой:

-[DetailViewController topViewController]: unrecognized selector sent to instance 0x14d649ca0 
2015-02-27 00:06:09.446 TabbedTutorial[1029:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DetailViewController topViewController]: unrecognized selector sent to instance 0x14d649ca0' 

Я понятия не имею, почему он работает на тренажере, но не на устройстве. Любые идеи, как это исправить?

Спасибо!

ответ

0

Когда вы вызываете селектор в экземпляре метода, который не принадлежит этому экземпляру.

0

Если этот вопрос по-прежнему не используется, тогда это может происходить ASFAIK на разных устройствах, существует другая иерархия.

Так, у может попробовать

 DetailViewController *controller ; 

    if([segue.destinationViewController isKindOfClass:[UINavigationController class] ] ) 
    { 
     controller = (DetailViewController *) [[segue destinationViewController] topViewController]; 
    } 
    else 
    { 
     controller = [segue destinationViewController]; 
    } 

    // pass data 
} 

Надеется, что это помогает

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