popToRoot 時に値をルート ビュー コントローラに戻す方法を知りたいです。
introVideoViewController *intro = [introVideoViewController alloc];
intro.fromReset =1;
[self.navigationController popToRootViewControllerAnimated:NO];
popToRoot 時に値をルート ビュー コントローラに戻す方法を知りたいです。
introVideoViewController *intro = [introVideoViewController alloc];
intro.fromReset =1;
[self.navigationController popToRootViewControllerAnimated:NO];
ポップバックしたい VC では、デリゲート プロパティを指定する必要があります -
@class MyViewController;
@protocol MyViewControllerDelegate <NSObject>
-(void)myViewControllerDidDismiss:(MyViewController *)controller withSomeObject:(id)someObject;
@end
@interface MyViewController : UIViewController
@property (nonatomic, assign) id<MyViewControllerDelegate> myViewControllerDelegate;
@end
...そして、ルート VC で、そのプロトコルに準拠させ、dismiss メソッドを実装します -
-(void)myViewControllerDidDismiss:(MyViewController *)controller withSomeObject:(id)someObject {
// now I've got the object from the VC I just popped
}
VC をポップするときに myViewControllerDidDismiss:withSomeObject: を呼び出す必要があることを忘れていました。
編集 - また、作成時に VC のデリゲートをルート VC として設定する必要があることを忘れていました。そうしないと、ポップバック時に nil を呼び出そうとします -
[myViewController setMyViewControllerDelegate:self];
以下のコードを使用するだけです
NSArray *arr = [self.navigationController viewControllers];
CLASS_OF_ROOT_VIEW_CONTROLLER *rvc = (CLASS_OF_ROOT_VIEW_CONTROLLER *)[arr objectAtIndex:0];
rvc.variable = value;