0

ログインビューコントローラーからモーダルにサインアップビューコントローラーを提示します。私の最初のビュー コントローラーはログイン ビュー コントローラーであり、サインアップ ビュー コントローラーをモーダルに表示しても問題はありませんが、ECSlidingViewController を使用してログアウト時にトップ ビューをリセットすると問題が発生します。次のコードを使用して、ログアウト時にトップ ビューをログイン ビュー コントローラーにリセットします。

UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
[self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
    self.slidingViewController.topViewController = newTopViewController;

    [self.slidingViewController resetTopView];

}];

ECSlidingViewController でトップ ビューをリセットした後、サインアップ ビューをモーダルに表示すると、サインアップ ビュー コントローラーの presentingViewController プロパティが、ログイン ビュー コントローラーではなく、別のビュー コントローラーに設定されます。

質問の本質を把握するのは本当に難しいことはわかっていますが、この質問に答えることができるようにさらに詳細が必要な場合は、お気軽に:)

4

1 に答える 1

1

ECSlidingViewControllerを台無しにしているようですpresentingViewController

ECSlidingViewControllerプロパティがあり、そこからtopViewController期待しているView ControllerにアクセスできるはずですpresentingViewController

presentingViewController次のようになると予想されるView Controllerにアクセスできました。

ECSlidingViewController *ec = (ECSlidingViewController*)self.presentingViewController;
if(ec) {
    UINavigationController *navController = (UINavigationController*)ec.topViewController;

    if(navController && navController.viewControllers.count) {

        UIViewController *top = navController.viewControllers[0];

        // now you'll need to cast top to your presenting view controller's class, eg:
        MyViewController *myVc = (MyViewController*)top;
        [myVc doSomething];
    }
}

アプリケーションでナビゲーション コントローラーを使用していない可能性があります。その場合、次のようになります (テストされていません)。

ECSlidingViewController *ec = (ECSlidingViewController*)self.presentingViewController;
if(ec) {
    UIViewController *top = (UIViewController*)ec.topViewController;

    if(vc) {            
        // now you'll need to cast top to your presenting view controller's class, eg:
        MyViewController *myVc = (MyViewController*)top;
        [myVc doSomething];
    }
}
于 2014-04-03T08:02:15.340 に答える