3

私のアプリのロジックは次のようなものです。VCA => VCB で、VCB には左右にスワイプする機能を備えたスクロール ビューがあります。一部のコードは、VCB で構造を理解するのに役立ちます。

self.scrollView.pagingEnabled = YES;
self.scrollView.directionalLockEnabled = YES;
self.scrollView.contentSize =CGSizeMake(CGRectGetWidth(self.scrollView.frame) * numberPages, CGRectGetHeight(self.scrollView.frame));

だから私が欲しいのは、いくつかのページを水平にリストし、左右にスワイプしてナビゲートすることです。各ページには独自のビュー コントローラー (VCB の子ビュー コントローラー) があり、次のように追加します。

if (controller.view.superview == nil)
{
    [self addChildViewController:controller];
    [self.scrollView addSubview:controller.view];
    [controller didMoveToParentViewController:self];               
}

これまでのところ、iOS 6 で問題なく動作しています。スワイプしてページを変更できます。各ページ内のすべての機能も正常に動作します。

次に、問題は iOS 7 の新機能、右にスワイプして自動的に呼び出すpopViewControllerAnimated:、[戻る] ボタンをクリックするのと同じ効果です。競合を解決するために、interactivePopGestureRecognizer を無効にself.navigationController.interactivePopGestureRecognizer.enabled = NO; します。ページをスワイプして変更したいだけで、強制的に戻る必要はありません。

今、本当の問題。ナビゲーションバーに戻るボタン(backBarButtonItem)を設定しました。VCB から VCA に戻るボタン ポップを使用するたびに、現在のページが最初のページではありません (つまり、左側に少なくとも 1 つのページがあることを意味します)。ポップ アニメーションは、最初にページを左側に変更し、次にアニメーションなしで VCA をすぐに表示します。

解決策はありますか?私を助けてください。

4

1 に答える 1

1

まず第一に、コードの一部がないと問題を特定するのは困難です。

次に、自分でボタンを作成し、ビュー コントローラーを閉じたりポップしたりする関数であるターゲットを追加しないのはなぜですか?

于 2013-12-25T08:36:45.450 に答える