Mon application plante lorsque j'essaie d'accéder à une méthode dans parentViewController. Voici la mise en page StoryBoardiOS Accès à la propriété dans parentViewController
MainViewController = STLMMainViewController (ParentViewController)
Scene1 = STLMTimeDateViewController (ChildViewController)
Voici le code pour STLMTimeDateViewController
#import "STLMTimeDateViewController.h"
#import "STLMMainViewController.h"
@interface STLMTimeDateViewController()
@property (nonatomic, strong) STLMMainViewController *stlmMainViewController;
@end
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"The name of the controller %@",self.navigationController.parentViewController);
stlmMainViewController= (STLMMainViewController *) self.parentViewController;
[stlmMainViewController locationButtonSelected]; // This is where the App crashes
NSLog(@"TimeDateController");
}
L'App Fonctionne, mais lorsque STLMMainViewController est appelé, l'application accidents avec l'erreur suivante:
2013-02-10 16:33:57.422 MyApp[9120:c07] The name of the controller <STLMMainViewController: 0x83850d0>
2013-02-10 16:33:57.434 MyApp[9120:c07] -[UINavigationController locationButtonSelected]: unrecognized selector sent to instance 0x8371a70
Si je supprime la ligne suivante:
stlmMainViewController = (STLMMainViewController *) self.parentViewController;
et juste laisser
[stlmMainViewController locationButtonSelected];
L'application fonctionne, pas d'erreur, mais la méthode suivante dans [ STLMMainViewController locationButtonSelected] n'est pas appelé (je ne vois jamais le journal):
-(void)locationButtonSelected
{
[LocationButton setSelected:YES];
[eatDrinkbutton setSelected:NO];
[timeCalButton setSelected:NO];
[carButton setSelected:NO];
[contactButton setSelected:NO];
NSLog(@"LocationButtonSelected Method");
}
Toutes les propriétés de la méthode locationButtonSelected et la méthode elle-même sont déclarées dans .h de STLMMainViewController pour un accès public.
Merci
La référence de classe pour UIViewController sur les sites de développement Apple indique ceci pour parentViewController ... Si le destinataire est un enfant d'un contrôleur de conteneur, cette propriété contient le contrôleur de vue dans lequel il est contenu. Si le destinataire n'a pas de parent, la valeur dans cette propriété est nulle. Avant iOS 5.0, si une vue n'avait pas de contrôleur de vue parent et était présentée, le contrôleur de vue de présentation était renvoyé. Sur iOS 5, ce problème ne se produit plus. À la place, utilisez la propriété presentingViewController pour accéder au contrôleur de présentation. Peut-être essayer de présenterViewController – chuthan20