web-dev-qa-db-ja.com

iOS:Swiftを使用してビュー間をスワイプするにはどうすればよいですか?

私はSwiftとiOSの開発に不慣れで、2番目のビューを右にスワイプしたり3番目のビューを左にスワイプしたりするメインビューを設定する方法を探しています。 2番目または3番目のビューは、メインビューにスワイプして戻ることができるはずです。

このようなスワイプビューを実現する方法をいくつか見つけました: https://medium.com/Swift-programming/ios-swipe-view-with-Swift-44fa83a2e078

しかし、「問題」は、両方向にスワイプする可能性のあるメインビューから始めたいということです。 (したがって、上記のソリューションでは、2番目のビューから開始します)

誰かがこれを行う方法を知っていますか?

9
LilK3ks

こんなに簡単です...

stackoverflow.com/a/26024779/294884

enter image description here

7
Fattie

このコードは、Swift&ストーリーボード(View Controller内))と連携して機能します。

import UIKit

class ViewController : UIViewController, UIPageViewControllerDataSource {
    var myViewControllers = Array(count: 3, repeatedValue:UIViewController())

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        let pvc = segue.destinationViewController as UIPageViewController

        pvc.dataSource = self

       let storyboard = UIStoryboard(name: "Main", bundle: nil);

        var vc0 = storyboard.instantiateViewControllerWithIdentifier("shopID") as UIViewController
        var vc1 = storyboard.instantiateViewControllerWithIdentifier("startID") as UIViewController
        var vc2 = storyboard.instantiateViewControllerWithIdentifier("avatarID") as UIViewController

        self.myViewControllers = [vc0, vc1, vc2]

        pvc.setViewControllers([myViewControllers[1]], direction:.Forward, animated:false, completion:nil)

        println("Loaded")
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
        var currentIndex =  find(self.myViewControllers, viewController)!+1
        if currentIndex >= self.myViewControllers.count {
            return nil
        }
        return self.myViewControllers[currentIndex]
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        var currentIndex =  find(self.myViewControllers, viewController)!-1
        if currentIndex < 0 {
            return nil
        }
        return self.myViewControllers[currentIndex]
    }

}
3
LilK3ks