如何从 UIScrollView 导航到自定义页面
Posted
技术标签:
【中文标题】如何从 UIScrollView 导航到自定义页面【英文标题】:How to navigate to Custom Page from UIScrollView 【发布时间】:2021-09-24 11:37:31 【问题描述】:Github 链接 - https://github.com/dnlatt/ios/tree/master/MobileDataUsage2
-
我从 Core Data 获取数据并传递给 MobileDataUsageViewController.swift。
let detailVC = segue.destination as! MobileDataDetailsViewController
detailVC.selectedYear = year
detailVC.years = years
detailVC.coreDataYears = coreDataYears
-
在该页面中,我想以滑块格式显示所有数据。
override func viewDidLoad()
super.viewDidLoad()
pageControl.numberOfPages = coreDataYears.count
pageControl.backgroundColor = .systemBlue
pageControl.currentPage = 1
scrollView.delegate = self
pageControl.addTarget(self, action: #selector(pageControlDidChange(_:)) , for: .valueChanged)
view.addSubview(scrollView)
view.addSubview(pageControl)
-
如何访问Core Data Array的索引?例如,从表格中,如果用户选择“2018”,我需要导航到第 2 页并显示第 2 页的结果。我可以在 Page View Control Event 中设置页码。
如果我从第一个屏幕点击 2018,它总是导航到
2019 年数据结果。我想设置正确的页面并导航到
正确的页面。如何从coreDataYears: [Year] = []
获取selectedYear: Year!
的索引并导航到正确的页面。我可以在下面的参数中设置变量
pageControl.currentPage = 1
现在只显示 2019 年的结果,这是第一个。
-
如果我在页面上滑动,它总是卡在底部。如何修复 UI 布局? UI 上还有额外的滚动条。
【问题讨论】:
您的问题中有很多代码。请您尝试找到一种方法来为您的问题提供相关代码。比如...您的选择/导航代码在哪里? Erm...您在标题中说您使用的是UITableView
,但您的代码只是您手动布局的UIScrollView
?使用实际的UITableView
会更有意义。一旦完成,您的整个问题就会消失。
你让整个事情变得比它需要的更难。
嗯...我认为您最好使用UIPageViewController
来实现您正在做的事情。有一个显示年份的 UITableView。然后点击你可以导航到一个UIPageViewController
,它将只有一年的当前视图控制器。但是让页面视图控制器能够横向滑动到上一年/下一年。你甚至可以拥有一个 PageControl。这样,您可以使每个单独的控制器保持较小。即只有一年的数据。但是使用多个控制器构建完整的功能。
@Fogmeister,非常感谢。那是救我的命。设法完成您的建议。
【参考方案1】:
Githublink - https://github.com/dnlatt/iOS/tree/master/MobileDataUsage3
通过使用 UIPageViewController 重构代码解决了这个问题。以上 Github 链接中的详细信息。
【讨论】:
太棒了!很高兴你成功了??以上是关于如何从 UIScrollView 导航到自定义页面的主要内容,如果未能解决你的问题,请参考以下文章
php 重力特权//多页面导航//将“当前”类添加到自定义页面链接
从 Windows Store App 中的 WebView 捕获到自定义协议的导航
如果匿名用户无权访问 URL,如何将他们重定向到自定义页面而不是登录页面?