2012-04-13 5 views
1

wird gerne wissen, wie ich Wert zurück in die Wurzel-View-Controller passieren, wenn ich popToRoot.wie Wert zu übergeben, wenn popToRoot

introVideoViewController *intro = [introVideoViewController alloc]; 
    intro.fromReset =1; 
    [self.navigationController popToRootViewControllerAnimated:NO]; 
+1

lernen Delegierung verwenden ... es wird sehr hilfreich sein. –

+2

Seit wann funktioniert die Delegation nicht ?! – SomaMan

+0

Gesamtes iPhone sdk basiert auf Delegierung ... wie können Sie sagen, dass es nicht mit ios5 funktioniert ... irgendein geschriebener Beweis, den Sie mir tooo ... führen können? @AalokParikh –

Antwort

3

Mit dem VC, die Sie von hinten nach Pop wollen, müssen Sie ihm einen Delegaten Eigenschaft geben -

@class MyViewController; 

@protocol MyViewControllerDelegate <NSObject> 

    -(void)myViewControllerDidDismiss:(MyViewController *)controller withSomeObject:(id)someObject; 

@end 


@interface MyViewController : UIViewController 

@property (nonatomic, assign) id<MyViewControllerDelegate> myViewControllerDelegate; 

@end 

... und in der Wurzel VC Sie es zu diesem Protokoll entsprechen machen, und Umsetzung des Verfahrens entlassen -

-(void)myViewControllerDidDismiss:(MyViewController *)controller withSomeObject:(id)someObject { 

    // now I've got the object from the VC I just popped 

} 

vergessen zu erwähnen, dass Sie benötigen myViewControllerDidDismiss zu nennen: withSomeObject: wenn Sie die VC Pop.

Bearbeiten - auch vergessen zu erwähnen, dass Sie die VC Delegierter als Stamm VC festlegen müssen, wenn Sie es schaffen, sonst werde es versuchen, werden null zu rufen, wenn Sie Pop zurück - Just

[myViewController setMyViewControllerDelegate:self]; 
2

Verwenden Sie den folgenden Code

NSArray *arr = [self.navigationController viewControllers]; 
CLASS_OF_ROOT_VIEW_CONTROLLER *rvc = (CLASS_OF_ROOT_VIEW_CONTROLLER *)[arr objectAtIndex:0]; 
rvc.variable = value; 
Verwandte Themen