【发布时间】:2015-09-09 22:01:32
【问题描述】:
我正在使用 Xcode 6 快速构建一个 iOS 应用程序。 我正在尝试在滚动视图中嵌入带有表格视图的视图控制器。当用户在表格视图中拖动时,假设移动表格,而不是它嵌入的滚动视图。 我做了这个插图,以明确我的视图和视图控制器层次结构:
红色区域是滚动视图的内容大小区域。
绿色和蓝色区域是不同的视图控制器,嵌入在滚动视图中。
黄色区域是蓝色视图控制器中的文本字段。
橙色区域是蓝色视图控制器中的表格视图。
我在滚动视图中启用了分页,以便它捕捉到绿色或蓝色视图控制器。如何将表格视图弹出到视图层次结构的顶部,以便滚动滚动视图的唯一方法是在文本字段中拖动。
import UIKit
class RootViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var greenViewController: GreenViewController!
var blueViewController: BlueViewController!
override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height))
scrollView.delegate = self
scrollView.pagingEnabled = true
self.greenViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Green View Controller") as! GreenViewController
self.blueViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Blue View Controller") as! BlueViewController
greenViewController.view.frame = CGRectMake(0, 0, view.bounds.width, view.bounds.height)
blueViewController = CGRectMake(0, view.bounds.height, view.bounds.width, view.bounds.height)
scrollView.addSubview(greenViewController.view)
scrollView.addSubview(blueViewController.view)
scrollView.contentSize = CGSizeMake(view.bounds.width, view.bounds.height*2)
self.view.addSubview(scrollView)
}
我希望我已经表达清楚了。
编辑:
我尝试在滚动视图滚动时更改它的大小。这个想法是改变框架的高度,使其在一直向下滚动时与文本字段的高度相匹配。但似乎它也改变了嵌入在滚动视图中的可见部分:
func scrollViewDidScroll(scrollView: UIScrollView) {
if self.scrollView.contentOffset.y > textField.View.bounds.height {
self.scrollView.frame.size.height = view.bounds.height - scrollView.contentOffset.y - textField.View.bounds.height
println(self.scrollView.frame)
}
}
【问题讨论】:
-
tableView 是否设置了委托?你确定tableView里面的内容超过了tableView的高度吗?
-
如果tableView的内容大于tableView的可视区域,那么tableView是否应该滚动?
标签: ios swift view uiscrollview subview