Swift 如何确定滚动视图中当前显示的子视图?
我是个敏捷的初学者。我有下面的视图设置,如下面的屏幕截图所示 它由一个位于顶部的CollectionView(包含两个单元格)(已完成和已打开)和一个位于其正下方的UISCrollsview(包含两个TableView子视图)组成 我希望能够滚动到下一个视图(打开Tableview列表),并通过更改顶部的选定单元格(打开)来指示。反之亦然如果我点击打开,我希望下面的滚动视图自动滚动到正确的子视图 所以我的问题是:Swift 如何确定滚动视图中当前显示的子视图?,swift,Swift,我是个敏捷的初学者。我有下面的视图设置,如下面的屏幕截图所示 它由一个位于顶部的CollectionView(包含两个单元格)(已完成和已打开)和一个位于其正下方的UISCrollsview(包含两个TableView子视图)组成 我希望能够滚动到下一个视图(打开Tableview列表),并通过更改顶部的选定单元格(打开)来指示。反之亦然如果我点击打开,我希望下面的滚动视图自动滚动到正确的子视图 所以我的问题是: 如何确定要滚动显示的当前子视图 如何根据顶部collectionview中选定的单
class OrdersViewController: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var ordersListSV: UIScrollView!
var orderStatus: [String] = ["Completed", "Open"]
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "ORDERS"
//creating the first view to show
let completedOrderView: CompletedOrdersTableViewController = CompletedOrdersTableViewController(nibName: "CompletedOrdersTableViewController", bundle: nil)
//showing the first view
self.addChildViewController(completedOrderView)
self.ordersListSV.addSubview(completedOrderView.view)
completedOrderView.didMove(toParentViewController: self)
//creating the second view to show
let openOrderView: OpenOrdersTableViewController = OpenOrdersTableViewController(nibName: "OpenOrdersTableViewController", bundle: nil)
//showing the second view
self.addChildViewController(openOrderView)
self.ordersListSV.addSubview(openOrderView.view)
openOrderView.didMove(toParentViewController: self)
//Adding the second view to the frame
var OpenOrderViewFrame: CGRect = openOrderView.view.frame
OpenOrderViewFrame.origin.x = self.view.frame.width
openOrderView.view.frame = OpenOrderViewFrame
//Allowing it to scroll over to the second view
self.ordersListSV.contentSize = CGSize(width: ordersListSV.bounds.width * 2, height: ordersListSV.bounds.height)
}
}
扩展顺序ViewController:UICollectionViewDelegate,UICollectionViewDataSource{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return orderStatus.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "OrderStatusCollectionViewCell", for: indexPath) as! OrderStatusCollectionViewCell
cell.lbOrderState.text = orderStatus[indexPath.row].uppercased()
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath.item)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidDisappear(false)
let indexPathForFirstRow = NSIndexPath.init(row: 0, section: 0)
collectionView?.selectItem(at: indexPathForFirstRow as IndexPath, animated: false, scrollPosition: .top)
}
}为什么不使用标签?不是100%确定你的意思吗?我是斯威夫特的新手。