大佬教程收集整理的这篇文章主要介绍了ios – 禁用UIPageViewController弹跳 – Swift [复制],大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的代码:
class PageViewController: UIPageViewController,UIPageViewControllerDatasource,UIPageViewControllerDelegate{ var index = 0 var identifiers: NSArray = ["FirstNavigationController","SecondNavigationController"] override func viewDidLoad() { self.datasource = self self.delegate = self let starTingViewController = self.viewControllerATindex(self.indeX) let viewControllers: NSArray = [starTingViewController] self.setViewControllers(viewControllers as [AnyObject],direction: UIPageViewControllerNavigationDirection.ForWARD,animated: false,completion: nil) } func viewControllerATindex(index: int) -> UINavigationController! { let storyBoard : UIStoryboard = UIStoryboard(name: "Main",bundle:nil) //first view controller = firstViewControllers navigation controller if index == 0 { return storyBoard.instantiateViewControllerWithIdentifier("FirstNavigationController") as! UINavigationController } //second view controller = secondViewController's navigation controller if index == 1 { return storyBoard.instantiateViewControllerWithIdentifier("SecondNavigationController") as! UINavigationController } return nil } func pageViewController(pageViewController: UIPageViewController,viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { let identifier = viewController.restorationIdentifier let index = self.identifiers.indexOfObject(identifier!) //if the index is the end of the array,return nil since we dont want a view controller after the last one if index == identifiers.count - 1 { return nil } //increment the index to get the viewController after the current index self.index = self.index + 1 return self.viewControllerATindex(self.indeX) } func pageViewController(pageViewController: UIPageViewController,viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { let identifier = viewController.restorationIdentifier let index = self.identifiers.indexOfObject(identifier!) //if the index is 0,return nil since we dont want a view controller before the first one if index == 0 { return nil } //decrement the index to get the viewController before the current one self.index = self.index - 1 return self.viewControllerATindex(self.indeX) } }@H_301_6@看看这里:
就个人而言,当我想在UIViewController之间滚动时,我更喜欢使用一个简单的UIViewController,它将是一个容器,里面有一个UIScrollView.然后我以编程方式添加UIScrollView的contentSize中的所有控制器.您必须将所有控制器添加为容器的子级.
更新iOS 9
func setupDetailViewControllers() { var prevIoUsController: UIViewController? for controller in self.controllers { addChildViewController(controller) addControllerInContentView(controller,prevIoUsController: prevIoUsController) controller.didMoveToParentViewController(self) prevIoUsController = controller } } func addControllerInContentView(controller: UIViewController,prevIoUsController: UIViewController?) { contentView.addSubview(controller.view) controller.view.translatesAutoresizingMaskIntoConsTraints = false // top controller.view.topAnchor.consTraintEqualToAnchor(contentView.topAnchor).active = true // bottom controller.view.bottomAnchor.consTraintEqualToAnchor(contentView.bottomAnchor).active = true // Trailing TrailingContentViewConsTraint?.active = false TrailingContentViewConsTraint = controller.view.TrailingAnchor.consTraintEqualToAnchor(contentView.TrailingAnchor) TrailingContentViewConsTraint?.active = true // leading let leadingAnchor = prevIoUsController?.view.TrailingAnchor ?? contentView.leadingAnchor controller.view.leadingAnchor.consTraintEqualToAnchor(leadingAnchor).active = true // width controller.view.widthAnchor.consTraintEqualToAnchor(scrollView.widthAnchor).active = true }@H_301_6@以前的答案
像这样:
scrollView是一个IBOutlet,与ContainerViewController的每个边缘都有约束
class ContainerViewController: UIViewController { @IBOutlet var scrollView: UIScrollView! override func viewDidLoad() { super.viewDidLoad() scrollView.bounces = false scrollView.pagingEnabled = true } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } override func viewDidLayoutSubviews() { initScrollView() } func initScrollView(){ let viewController1 = storyboard?.instantiateViewControllerWithIdentifier("ViewController1") as! ViewController1 viewController1.willMoveToParentViewController(self) viewController1.view.frame = scrollView.bounds let viewController2 = storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2 viewController2.willMoveToParentViewController(self) viewController2.view.frame.size = scrollView.frame.size viewController2.view.frame.origin = CGPoint(x: view.frame.width,y: 0) scrollView.contentSize = CGSize(width: 2 * scrollView.frame.width,height: scrollView.frame.height) scrollView.addSubview(viewController2.view) self.addChildViewController(viewController2) viewController2.didMoveToParentViewController(self) scrollView.addSubview(viewController1.view) self.addChildViewController(viewController1) viewController1.didMoveToParentViewController(self) }}@H_301_6@
以上是大佬教程为你收集整理的ios – 禁用UIPageViewController弹跳 – Swift [复制]全部内容,希望文章能够帮你解决ios – 禁用UIPageViewController弹跳 – Swift [复制]所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。