2

EDIT: Ajout Source projetsplitViewController avec deux protocoles NavigationController reliant

--> I uploaded a sample project that clearly shows my dilemma which can be found here <--

J'ai créé une application Scinder. J'ai ensuite ajouté un second UINavigationController au DetailViewController à l'intérieur de MainWindow.xib.

Ensuite, je lance une nouvelle Sous-classes UIViewController quand un élément de la barre d'outils est cliqué. J'utilise le code suivant pour conduire le pop:

DocumentDetailVC *DetailViewController = [[DocumentDetailVC alloc] initWithNibName:@"DocumentDetailVC" bundle:[NSBundle mainBundle]]; 
[detailViewController.detailNavController pushViewController:DetailViewController animated:YES]; 

DocumentsVC *RRequestViewController = [[DocumentsVC alloc] initWithNibName:@"DocumentsVC" bundle:[NSBundle mainBundle]]; 
[self.navigationController pushViewController:RRequestViewController animated:YES]; 

Cela fonctionne. Le problème que je rencontre est comment puis-je transmettre des informations ou des appels de fonction du côté principal de la vue partagée au détail de la vue partagée?

Si je vous présente la UIViewController via la méthode suivante:

DocumentDetailVC *RRequestViewController = [[DocumentDetailVC alloc] initWithNibName:@"DocumentDetailVC" bundle:[NSBundle mainBundle]]; 
RRequestViewController.delegate=self; 
RRequestViewController.modalPresentationStyle = UIModalPresentationCurrentContext; 
[RRequestViewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentModalViewController:RRequestViewController animated:YES]; 
[RRequestViewController release]; 
RRequestViewController = nil; 

Je suis en mesure de terminer une portée à travers un protocole comme prévu.

DocumentDetailVC, lorsqu'il est chargé par le pushViewController, la hiérarchie est la suivante:

NSLog([NSString stringWithFormat:@"%@",self]); 
//self = <DocumentDetailVC: 0x4e0d960> 
NSLog([NSString stringWithFormat:@"%@",self.parentViewController]); 
//self.parentViewController = <UINavigationController: 0x4e0ce30> 
NSLog([NSString stringWithFormat:@"%@",self.parentViewController.parentViewController]); 
//self.parentViewController.parentViewController = <UISplitViewController: 0x4e0d0f0> 

Nous vous remercions de votre aide. Ce problème consume ma vie!

--> I uploaded a sample project that clearly shows my dilemma which can be found here <--

Répondre

4

Ok, je sais que je suis très en retard pour réponse, mais cette réponse est, je pense, parfait et travailler. Essayez-le. Ouvrez votre RootViewController.h, sur la ligne d'écriture haut de cette:

#import "Left.h" 
#import "Right.h" 

à @interface RootViewController écrire ces lignes

Left *lefty; 
Right *righty; 

après cette propriété déclarer,

@property (nonatomic, retain) Left *lefty; 
@property (nonatomic, retain) Right *righty; 

aller à RootViewController Le fichier .M se synthétise sous la forme:

@synthesize lefty; 
@synthesize righty; 

après que RootViewController.m votre fonction il suffit de remplacer avec celui-ci

- (IBAction)myBtnPushed{ 
    NSLog(@"myBtnPushed"); 


    lefty = [[Left alloc] initWithNibName:@"Left" bundle:[NSBundle mainBundle]]; 
    righty = [[Right alloc] initWithNibName:@"Right" bundle:[NSBundle mainBundle]]; 

    lefty.delegate=righty; 
    [self.navigationController pushViewController:lefty animated:YES]; 

    [detailViewController.navigationController pushViewController:righty animated:YES]; 


} 

à delloac écrire cela,

[lefty release]; 
lefty = nil; 
[righty release]; 
righty = nil; 

Il est fait, exécutez votre application. J'ai testé, c'est fait.

+0

Veuillez désactiver le verrouillage des majuscules. –

Questions connexes