2017-08-29 5 views
-1

UIPageViewControllerの内部に2つのビューコントローラがあります。 UIPageViewController内のすべてのビューコントローラを取得して、それらのメソッドを呼び出す必要がありますが、常に1ページだけ(最初のページまたは2ページ目)が返されます。UIPageViewController viewControllersは常に1つのコントローラを返します

コードは、便宜上、以下である:

if let viewControllers: [UIViewController] = self.viewControllers { 

    print(viewControllers) 

    for controller in viewControllers { 
     if let firstController: FirstViewController = controller as? FirstViewController { 
      //Call something 
     } 
     if let secondController: SecondViewController = controller as? SecondViewController { 
      //Call something 
     } 
    } 
} 

実際には、それはページコントローラ内部のみ表示ビューコントローラを返します。

+0

"私はUIPageViewControllerの内部に2つのビューコントローラを持っています"いいえ、そうではありません。 'print(self.viewControllers.count)'は、その事実の真実を明らかにするでしょう。 – matt

答えて

1

これは意図した動作です。

UIPageViewControllerでは、この配列は現在表示されているビューコントローラ(通常はただ1つのビューコントローラ)を返します。

UIPageViewControllerが重くだけUITableViewControllerたい、コントローラを再利用をキャッシュすることに注意してください。変更を別の方法で反映したい場合があります。

+0

あなたはそれをノッチしました。一度に複数のコントローラを表示できる場合は、複数のコントローラを表示します。 – sinner

関連する問題