0

JFDepthViewJeremy Fox のライブラリを使用する iPad アプリケーションを構築しています。慣れていない人のために説明すると、基本的には新しいビュー コントローラーを前面中央に配置し、親ビューを背景に送り、それにぼかしアルゴリズムを適用して、提示されたトップ ビューにユーザー フォーカスを移動させることができます。それはすべて完全に機能しますが、int の値を設定しparentViewController、提示された topView からそれを渡すのに問題があります。

TTViewController元のView Controllerはどれですか。このビューでボタンがタップされると、呼び出さJFDepthViewれた の上に新しいビューが表示されます。ボタンがタップされると、そのビューが閉じられ、ボタンが押されたときに設定したパスバックに応じて、親で特定のアクションが発生します。TTViewControllerIndustryViewControllerIndustryViewControllerTTViewControllerint

元の(親)viewControllerでintのプロパティを作成しました。

@interface TTViewController : UIViewController <JFDepthViewDelegate> {

}

@property (nonatomic, assign) int          defence;

@end

私の子View Controller(JFDepthViewによって上に表示されるもの)で、親にアクセスして変数の値を設定し、ビューを閉じようとしています。

@implementation IndustryViewController

- (IBAction)defenceBtnPressed:(id)sender
{
    TTViewController *viewController = (TTViewController *)self.parentViewController;
    viewController.defence = 1;
    [self.depthViewReference dismissPresentedViewInView:self.presentedInView animated:YES];
}

エラーや警告は表示されず、すべて正常にビルドされます。しかし、int 'defence' の値は常に 0 です。私は明らかに何か間違ったことをしており、parentViewController のセットアップを理解していません。誰かが空白を埋めるか、正しい方向に私を向けることができますか?

編集:ログアウトするparentViewControllerpresentingViewController、両方がNULL. また、防御変数を設定した直後にログアウトしましたが、実際に「1」に設定されることはありません。

4

1 に答える 1

1

かどうかself.parentViewControllerを確認しnilます。JFDepthView は をparentViewController自動的に設定しないと思います。

self.depthViewReference親View Controller(つまり、presentViewController:xxx inView:self.view現在のVCを表示するために呼び出したもの)である場合は、それを目的のクラスに単純にキャストして設定TTViewControllerdefence = 1ます。

于 2012-12-21T23:19:00.807 に答える