1

popToRoot 時に値をルート ビュー コントローラに戻す方法を知りたいです。

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

2 に答える 2

3

ポップバックしたい 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];
于 2012-04-13T11:31:53.787 に答える
2

以下のコードを使用するだけです

NSArray *arr = [self.navigationController viewControllers];
CLASS_OF_ROOT_VIEW_CONTROLLER *rvc = (CLASS_OF_ROOT_VIEW_CONTROLLER *)[arr objectAtIndex:0];
rvc.variable = value;
于 2012-04-13T11:32:06.333 に答える