2016-11-30 10 views
0

私は非常に具体的なユースケースを持っています。初めてのユーザーエクスペリエンスUIPageViewControllerに「続行」ボタンを追加したいと思います。この記事(Swift iOS: how to trigger next page using buttons)は、すべてのページに表示したい場合は触れていますが、その広範な使用を計画していません。uiviewcontroller/storyboardのuibuttonを使ってuipageviewcontrollerのページを進めるには

私はUIPageViewControllerと6つのViewControllerを持っていますが、現在はスワイプでナビゲートできます。

ボタンをビューコントローラにセグに接続しようとしましたが、これはPageViewControllerの外に表示されます。私はちょうどボタンをクリックして左スワイプ右にプッシュしようと思ったが、私はそれを図を終了することができませんでした。

誰かがビューコントローラの1つに1つのボタンを配置し、UIPageViewController内の次のビューコントローラに進む方法を知っていますか?


これは重複としてマークされていますが、この問題は重複していません。同様のものはほとんどありませんが、そのようなものはありません。もしあればリンクしてください。現在リンクされているバージョンは、同様の質問に対するobj-cの回答です。必要な機能をView Controllerにリンクする方法については説明がありません。その答えは、グローバルなボタンとして簡単に実装できますが、単一のView Controllerボタンはそのボタンでカバーされていません。最終的なコードソリューションの

おかげ


編集。

だからこのuipageviewcontrollerデータソース拡張で迅速3.

でコーディングされた2つの部分の溶液で次のように、ページを反転するFUNCを構築しました。

func goNextPage() { 
    let cur = self.viewControllers![0] 
    let p = self.pageViewController(self, viewControllerAfter: cur) 
    self.setViewControllers([p!], direction .forward, animated: true, completion: nil) 
    } 

次のように個々のビューコントローラ内のピースが内蔵されて

@IBAction func nextPageButtonWasTapped(_ sender: Any) { 
    var candidate: UIViewController = self 
    while true { 
    if let pageViewController = candidate as? MyUIPageViewController { 
     pageViewController.goNextPage() 
     break 
    } 
    guard let next = parent else { break } 
    candidate = next 
    } 
} 
+0

あなたの質問は実際には 'UIPageControl'と何か関係がありますか、それともあなたのタイトルの間違いですか? –

+0

申し訳ありません、uipageviewcontrollerに編集しました –

+1

[this](http://stackoverflow.com/questions/11938149/turn-page-programmatically-in-uipageviewcontroller-when-using-uipageviewcontroll)があなたの質問に答えているかどうかを確認してください。 –

答えて

0

は、ページビューコントローラを見つけるために、ビューコントローラ階層を歩きます。あなたがそれを見つけた場合、ページをめくるためにそれを頼む:

@IBAction func nextPageButtonWasTapped(_ sender: AnyObject?) { 
    var candidate: UIViewController = self 
    while true { 
     if let pageViewController = candidate as? UIPageViewController { 
      candidate.navigateForward() 
      break 
     } 
     guard let next = parentViewController else { break } 
     candidate = next 
    } 
} 

this answerからObjective-Cのバージョンに基づいて、UIPageViewControllerの拡張でnavigateForwardを実装します。

+0

お返事ありがとうございます!私は次のページに行くために拡張機能に関数を構築しましたが、それらを接続することができませんでした。私はあなたが正しい道を私に与えてくれたと思う。 私はこれを実装したとき、私はそれがページビューコントローラとして候補変数をキャストいないように見えるので、「型の値が「goNextPage 『「のUIViewControllerは』何のメンバーを持っていない」と言う戻ってくるエラーを取得します。 –

+0

私が何を考え出しました私が構築した拡張機能とカスタムのViewControllerではなく、一般的なページビューコントローラとしてキャストしていましたが、今すぐ接続して、拡張機能を動作させる必要があります。再度、感謝します! –

関連する問題