0

У меня есть UIViewController, и я должен передать значение (UIImage, NSString) к UINavigationViewController, я используюКак передать значения к другому UINavigationViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    AppDetail *advc = [segue destinationViewController]; 
    if ([[segue identifier] isEqualToString:@"showDetail"]) { 
     advc.appTitel = name; 
     advc.appIcon = icon; 
     advc.detailAppName = detileName; 
     advc.appDescription = description; 
     advc.appDeveloper = developer; 
    } 
} 

передать значение в UIViewController, его отлично работает, если я передаю его непосредственно на UIViewController, но я не могу передать его UINavigationViewController, Кто-нибудь знает, как я могу это сделать?

+1

Вы можете, если вы подклассифицируете UINavigationController таким же образом, как и подкласс UIViewController – bandejapaisa

+0

@bandejapaisa OK, как? –

+0

Вы не должны подклассифицировать UINavigationController. Вы можете использовать 'advc.navigationController' или, в идеале, создать отдельный объект для управления обработкой данных (поэтому контроллеры представления могут сфокусироваться на дисплее). –

ответ

2

У меня есть этот образец кода из примера Apple segue. Возможно, это помогает.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"Room Create"]) { 
     // Prepare the settings view where the user inputs the 'serviceType' and local peer 'displayName' 
     UINavigationController *navController = segue.destinationViewController; 
     SettingsViewController *viewController = (SettingsViewController *)navController.topViewController; 
     viewController.delegate = self; 
     // Pass the existing properties (if any) so the user can edit them. 
     viewController.displayName = self.displayName; 
     viewController.serviceType = self.serviceType; 
    } 
} 
+0

Спасибо, он отлично поработал! –

+0

У меня была такая же проблема дней назад – iCode

0

Чтобы передать значение с помощью Segue в вашем случае с UINavigationController попробовать код ниже:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) 
    { 
     UINavigationController *navController = (UINavigationController *)segue.destinationViewController; 
     AppDetail *advc = (AppDetail *)navController.topViewController; 

     advc.appTitel = name; 
     advc.appIcon = icon; 
     advc.detailAppName = detileName; 
     advc.appDescription = description; 
     advc.appDeveloper = developer; 
    } 
} 

Если вы не используете UINavigationController, вы должны использовать этот следующий код:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) { 

     // Get reference to the destination view controller 
     AppDetail *advcc = segue.destinationViewController; 

     advc.appTitel = name; 
     advc.appIcon = icon; 
     advc.detailAppName = detileName; 
     advc.appDescription = description; 
    } 
} 
Смежные вопросы