0

問題はこれです。ルートビューコントローラーとしてPageViewControllerがあります。PageViewControllerクラスのViewDidLoadブロックでSetViewControllersを使用して最初のページを初期化することは、ページのジェスチャレコグナイザーを使用してページを前後に反転することと同様に機能します。このルートビューコントローラーは、AppDelegateを介してアプリケーション全体で利用できます。

本のどこからでも最初のページに戻る機能を追加したかったので、単にSetViewControllersメソッドを呼び出すパブリックメソッドをPageViewControllerクラスに作成しました。これは機能しているように見えますが、特定の癖に気づきました。バックグラウンドでループしている音楽(ここでも、AppDelegateで宣言されたAVAudioオブジェクト)が再開され、ジェスチャーレコグナイザーを使用してページが再びめくられるまで、ViewDidLoadブロックは起動しません。

GetNextViewControllerを使用して同じことを試しましたが、PageViewController参照に対してnull参照例外がスローされるだけです。把握していないコントロール間には何らかの関係があると思います。おそらく、PageViewControllerのデータソースと関係があります。これをデフォルトのメソッドをオーバーライドするクラスに委任し、Monoのthis.pageViewController.GetNextViewController =デリゲート(メソッドシグネチャ)構文を使用してみましたが、役に立ちませんでした。

ここでの私の問題が何であるかについて誰かが何か洞察を持っていますか?

編集:AppDelegate.csのコードはここで表示できます:https://gist.github.com/1747537およびPageViewController.csのコードはここで表示できます: https ://gist.github.com/1747559 。

4

1 に答える 1

0

コードにいくつかの問題があります。

  • あなたは既にアプリのルート コントローラーになっているため、どこでもPageViewController呼び出す必要はありません。AddSubview()
  • から継承しUIViewController、カプセル化しますUIPageViewController。継承するか、UIPageViewController継承をまったく持たない必要があります(ディミトリがUIPageViewControllerサブクラス化を意図していないと言うように、それが真の場合)。
  • ReturnToFrontPage()、サブクラス化された ではなく AppDelegate のメソッドである可能性がありますUIPageViewController
  • 継承とカプセル化を組み合わせて、View Controller の階層を構築しています。適切に実装されていないと、イベントがトリガーされて問題が発生します。

要するに、あなたの場合は何も継承しないでください。プレーンな UIPageViewController を使用して、AppDelegateReturnTpFrontPage()のメソッドを作成すると、すべてが公園を散歩するようになります。

于 2012-02-06T09:31:27.867 に答える