Альтернатива для Android ViewPager в iOS с Swift 3

Я разрабатываю приложение для iPhone, используя Swift 3, и у меня есть некоторые сомнения по поводу навигации между страницами внутри ViewController.

В моем приложении для Android у меня есть активность с использованием ViewPager com два фрагмента. Каждый фрагмент имеет различную реализацию и взаимодействует с основным видом деятельности.

Как это:

введите описание изображения здесь

и результат:

введите описание изображения здесь

Мой вопрос, как я могу сделать это быстро?

1 ответ

В ios нет прямого управления. В любом случае, если вы хотите добиться того же, что и функции и эффекты пейджера для Android, используйте следующие элементы управления

MainViewController{
//Design your main controller
// Place Container view in main controller (You can give custom height for container view)

}

create new view controller which extends UIPageViewController 
MyPagerViewController : UIPageViewController{
// this will be directly connected to container view of Main view controller
}

эталонное изображение

MyPagerViewController :  UIPageViewController {

 var selectedBlock:Int = 1

 required init?(coder aDecoder: NSCoder) {
        super.init(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)

    }

override func viewDidLoad() {
        super.viewDidLoad()

        dataSource = self;
        delegate = self;

        // Setting First View
        if let firstViewController = orderedViewControllers.first {
            setViewControllers([firstViewController],
                               direction: .forward,
                               animated: true,
                               completion: nil)
        }
    }


  // List of UIView Controllers
    private(set) lazy var orderedViewControllers: [UIViewController] = {
        return [self.newColoredViewController(name: “Green”),
                self.newColoredViewController(name: “Yellow”)]
    }()

    private func newColoredViewController(name: String) -> UIViewController {
        return UIStoryboard(name: "Main", bundle: nil) .
            instantiateViewController(withIdentifier: "\(name)ViewController")
    }
}

extension MyPagerViewController: UIPageViewControllerDataSource, UIPageViewControllerDelegate {

    func pageViewController(_ pageViewController: UIPageViewController,
                            viewControllerBefore viewController: UIViewController) -> UIViewController? {
        guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else {
            return nil
        }

        let previousIndex = viewControllerIndex - 1

        //selectedBlock = viewControllerIndex+1

        // User is on the first view controller and swiped left to loop to
        // the last view controller.
        guard previousIndex >= 0 else {
            return nil//orderedViewControllers.last
        }

        guard orderedViewControllers.count > previousIndex else {
            return nil
        }
        return orderedViewControllers[previousIndex]
    }

    func pageViewController(_ pageViewController: UIPageViewController,
                            viewControllerAfter viewController: UIViewController) -> UIViewController? {




        guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else {
            return nil
        }

        let nextIndex = viewControllerIndex + 1

        //selectedBlock = viewControllerIndex+1

       // print("**********" + String(selectedBlock));

        let orderedViewControllersCount = orderedViewControllers.count

        // User is on the last view controller and swiped right to loop to
        // the first view controller.
        guard orderedViewControllersCount != nextIndex else {
            return nil//orderedViewControllers.first
        }        
        guard orderedViewControllersCount > nextIndex else {
            return nil
        }        
        return orderedViewControllers[nextIndex]enter code here
    }

    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool){
        if(completed){
            if pageViewController.viewControllers![0] is GreenViewController {
                selectedBlock = 1 // this is global variable
            }else{
                selectedBlock = 2
            }
        }        
    }    
}
Другие вопросы по тегам