- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
目标:让一个viewcontroller有多个页面并且可以通过分段 Controller 进行交换,页面内容可以垂直滚动
详情:
我制作了一个 pagviewcontroller 并将其作为 subview 嵌入到主 viewcontroller
//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 来管理分段 View Controller ,如下所示:
EditTabs.setViewControllers([pagesAtIndexPath(0)!], direction:.Reverse, animated: true, completion: nil)
在 Storyboard中,子页面内部有 ScrollView 来保存内容
我通过 segue 调用它来测试子页面 ScrollView ,它工作正常
案例:
如何解决这个问题?您的指南将不胜感激
谢谢,
最佳答案
我使用 PageViewController 创建了一个 View Controller ,其中包含三个具有 ScrollView 的 View Controller 。它工作正常。
导入 UIKit类 ViewController: UIViewController, UIPageViewControllerDataSource {
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, y: 0, width: view.frame.size.width, 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
}
关于ios - subview 滚动不起作用 SWIFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38835618/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!