如何从 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,如何将他们重定向到自定义页面而不是登录页面?

将子视图添加到自定义 viewForHeaderInSection 会中断 VoiceOver 导航

如何将 JSP 页面包含到自定义标记中