java向前引用和向后引用是啥概念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java向前引用和向后引用是啥概念相关的知识,希望对你有一定的参考价值。

所谓向前引用,就是在定义类、接口、方法、变量之前使用它们。
反之,向后引用就是我们正常的写法。
参考技术A 在java实现某个功能的时候,会将类实例化成对象,然后jvm再对实例化后的对象进行操作。 实例化后的对象可以赋值,也可以引用。赋值时,java会开辟一个新的地址用于存放变量,而引用则不开辟地址。 String a = "a"; String b = "a"; 将String类实...追问

没说完呢

如何使用按钮在 UIPageViewController 中向前和向后导航?

【中文标题】如何使用按钮在 UIPageViewController 中向前和向后导航?【英文标题】:How do I navigate forward and backward within UIPageViewController using buttons? 【发布时间】:2017-12-22 19:51:46 【问题描述】:

我正在为一家物理治疗诊所的新患者创建一个入职应用程序。新患者将在UIPageViewController 内的每个视图控制器上回答问题,然后点击按钮转到下一个问题。

我按照教程设置了我的 UIPageViewController PageVC 以及 3 个视图控制器。 PageVC 当前通过滑动更改页面,但我希望能够使用两个按钮在视图控制器中向后和向前导航,这些按钮是 PageVC 本身的子视图。我该如何做到这一点?

我喜欢使用UIPageViewController 并想进一步了解它。如果除了使用UIPageViewController 之外还有更有效的方法来完成同样的任务,我很乐意考虑。

    class PageVC: UIPageViewController, UIPageViewControllerDataSource 

        private(set) lazy var orderedViewControllers: [UIViewController] = 
            return [self.VCInstance(name: "BodyChart"),
                    self.VCInstance(name: "Symptoms"),
                    self.VCInstance(name: "HadSurgery")]
        ()

        private func VCInstance(name: String) -> UIViewController 
            return UIStoryboard(name: "Main", bundle: nil) .
                instantiateViewController(withIdentifier: name)
        

        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? 
            guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else 
                return nil
            

            let previousIndex = viewControllerIndex - 1

            guard previousIndex >= 0 else 
                return nil
            

            guard orderedViewControllers.count > previousIndex else 
                return nil
            

            return orderedViewControllers[previousIndex]
        

        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? 
            guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else 
                return nil
            

            let nextIndex = viewControllerIndex + 1
            let orderedViewControllersCount = orderedViewControllers.count

            guard orderedViewControllersCount != nextIndex else 
                return nil
            

            guard orderedViewControllersCount > nextIndex else 
                return nil
            

            return orderedViewControllers[nextIndex]
        

        override func viewDidLoad() 
            super.viewDidLoad()

            dataSource = self

            if let firstViewController = orderedViewControllers.first 
                setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)
            
        

 

【问题讨论】:

可能重复:link 【参考方案1】:

我想你要找的是here. 但这是另一种方式。

UIPageViewController 有一个实例方法转换。下面的sn-p会从第一页子视图控制器移动到第二页。

pageViewController.transition(from: pageViewController.viewControllers[0], to: pageViewController.viewControllers[1], duration: 0.3, options: UIViewAnimationOptions.curveEaseInOut, animations: nil, completion: nil)

PageVC 目前通过滑动来更改页面,但我希望能够使用两个按钮在视图控制器中前后导航

将您的按钮添加到页面内容,然后禁用horizontal scrolling on PageVC's scrollview 或以有礼貌的方式禁用视图的用户交互。

【讨论】:

以上是关于java向前引用和向后引用是啥概念的主要内容,如果未能解决你的问题,请参考以下文章

Java中List向前和向后遍历

双向链表--Java实现

播放音频文件以在使用键盘弹奏时向前和向后搜索十秒

shell变量引用

JS正则向前查找和向后查找

每次在libgdx中单击按钮时如何向前和向后移动Sprite?