2017-04-01 52 views
2

我正在開發iPhone的Swift 3應用程序,並且我對ViewController中的頁面之間的導航存在一些疑問。替代iOS的Swift 3中的Android ViewPager

在我的android應用程序中,我有一個使用ViewPager com兩個片段的活動。每個片段具有不同的實現並與主要活動交互。

像這樣:

enter image description here

和結果是:

enter image description here

我的問題是如何能在迅速做呢?

回答

0

有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 
} 

reference Image

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 
      } 
     }   
    }  
}