質問

私のアプリケーションでは、 rootviewcontroller(uipageViewController)、FirstController(UiviewController)とSecondController(UiviewController)を持っています。 2つの uiviewcontrollersの2つのビューは、RootViewController をスクロールします。

My RootViewController.h:

@interface RootController : UIPageViewController <UIPageViewControllerDataSource, UIPageViewControllerDelegate>
.

しかし、私が異なるビューの間をスクロールすると、次のような委任状況を委任します。

-(void) pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
.

が呼び出されません。 どうして?誰かが私を助けることができますか?事前にありがとうございました。

役に立ちましたか?

解決

uipageViewControllerのdelegate / dataSourceになるようにRootViewController(デリゲートコールを受信したいコントローラ/オブジェクト)を割り当てましたか?

pageViewController.delegate = rootViewController;
pageViewController.dataSource = rootViewController;
.

他のヒント

上記の明らかな解決策に加えて、この問題に遭遇している場合は、PageViewController自体が保持されていない可能性を検討してください。私はPageViewControllerをインスタンス化し、そのビューをサブビューとして追加したが、PageViewController自体を保持していないことを早く間違えました。

ChildViewControllerとして追加するか、強力なプロパティに割り当てることで必ず保持してください。

ページビューコントローラのデリゲートアウトレットをどのように接続しましたか?私の推測はあなたがデリゲートリンクを接続したことがないということです。

ページビューコントローラを持つことは、それ自身のデータソースとデリゲートであることです。あなたがしているように、それがうまくいくとわからないとわかりました。ページビューコントローラを管理するコンテナビューコントローラを常に設定します。ストーリーボードでは、IBにコンテナビューを設定し、埋め込みセグューを接続します。その後、コンテナビューコントローラをデータソースおよび/またはデリゲートにすることができます。

は、なぜDidFinishanimatingが呼ばれていなかったのかを理解しようとしていた時間を費やしました。私の代理人は右に設定されましたが、Swift 3では、機能がそのようになります。

func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool)
.

上記のアンダースコアを気にしています。以下の関数は呼ばれません。

func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool)
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top