ios – 子视图滚动不能正常工作SWIFT

目标:使视图控制器具有多个页面并且可以通过分段控制器进行交换,页面内容可以垂直滚动

细节:

>我制作了一个pagviewcontroller并将其作为子视图嵌入到主视图控制器中

@H_502_6@//add pageviewcontroller as subview to viewcontroller if let vc = storyboard?.instantiateViewControllerWithIdentifier("ProfileEditController"){ self.addChildViewController(vc) self.view.addSubview(vc.view) EditTabs = vc as! UIPageViewController EditTabs.dataSource = self EditTabs.delegate = self //define First page EditTabs.setViewControllers([pagesAtIndexPath(0)!],direction:.Forward,animated: true,completion: nil) EditTabs.didMovetoParentViewController(self) //bring segmented view buttons to front of pageViews self.view.bringSubviewToFront(self.topTabs) }

>我调用了pageViewController函数,我通过恢复标识符添加页面
>我通过获取pageindex并设置viewcontroller来管理分段视图控制器,如下所示:

@H_502[email protected]([pagesAtIndexPath(0)!],direction:.Reverse,completion: nil)

>在故事板中,子页面内部具有滚动视图以保存内容
>我测试了子页面滚动视图,通过segue调用它并且工作正常

案件:

>一切正常只有子页面的滚动视图根本不起作用

如何解决这个问题?
您的指导将非常感谢

谢谢,

解决方法

>我创建了一个带有PageViewController的视图控制器,其中包含三个具有滚动视图的视图控制器.它工作正常.

导入UIKit
class ViewController:UIViewController,UIPageViewControllerDataSource {

@H_502_6@var viewControllers : [UIViewController]? override func viewDidLoad() { super.viewDidLoad() CreatePageView() } func CreatePageView() { SetupViewControllers() let pageViewController = UIPageViewController(transitionStyle: .scroll,navigationorientation: .horizontal,options: nil) pageViewController.dataSource = self pageViewController.setViewControllers([(viewControllers?[0])!],direction: .forward,animated: false,completion: nil) pageViewController.view.frame = CGRect(x: 0,y: 0,width: view.frame.size.width,height: view.frame.size.height); pageViewController.view.frame = CGRect(x: 0,height: view.frame.size.height); addChildViewController(pageViewController) view.addSubview(pageViewController.view) pageViewController.didMove(toParentViewController: self) pageViewController.view.backgroundColor = UIColor.blue } func SetupViewControllers() { let firstVC = UIViewController() firstVC.view.tag = 100 firstVC.view.backgroundColor = UIColor.red AddScrollView(bgView: firstVC.view) let secondVC = UIViewController() secondVC.view.tag = 101 secondVC.view.backgroundColor = UIColor.brown AddScrollView(bgView: secondVC.view) let thirdVC = UIViewController() thirdVC.view.tag = 102 thirdVC.view.backgroundColor = UIColor.purple AddScrollView(bgView: thirdVC.view) viewControllers = [firstVC,secondVC,thirdVC] } func AddScrollView(bgView: UIView) { let scrollView = UIScrollView() scrollView.frame = CGRect.init(x: 10,y: 10,width: bgView.frame.width-20,height: bgView.frame.height-20) scrollView.backgroundColor = UIColor.init(red: 0.34,green: 0.45,blue: 0.35,alpha: 0.9) bgView.addSubview(scrollView) scrollView.contentSize = CGSize.init(width: scrollView.frame.size.width,height: scrollView.frame.size.height+200) } func pageViewController(_ pageViewController: UIPageViewController,viewControllerBefore viewController: UIViewController) -> UIViewController? { if viewController.view.tag == 101 { return viewControllers?[0] } else if viewController.view.tag == 102{ return viewControllers?[1] } else{ return viewControllers?[2] } } public func pageViewController(_ pageViewController: UIPageViewController,viewControllerAfter viewController: UIViewController) -> UIViewController? { if viewController.view.tag == 101 { return viewControllers?[0] } else if viewController.view.tag == 102{ return viewControllers?[1] } else{ return viewControllers?[2] } } func presentationCount(for pageViewController: UIPageViewController) -> Int { return (viewControllers?.count)! } func presentationIndex(for pageViewController: UIPageViewController) -> Int { return 0 }

}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...