Hide Punkte auf der letzten Seite von UIPageViewController swift

Ich habe vier Seiten in einem UIPageViewController und möchte die Punkte auf der letzten Seite ausblenden. Ich habe erfolgreich eine Funktion erstellt, die auf der letzten Seite des UIPageViewControllers aufgerufen wird. Wenn die aktuelle Ansicht die letzte ist, wird sie grundsätzlich aufgerufen. Aber was stelle ich in diese Funktion, um die Punkte vorübergehend auszublenden?

Ich habe das gefundenhttps: //stackoverflow.com/a/32016614/570089 aber es hilft nicht, was in dieser Funktion geht. Die normale Methode (Ausblenden von Seitenpunkten auf allen Seiten) ist nicht die, die ich brauche.

Wie kann ich die Seitenanzeigerpunkte nur auf der letzten Seite eines UIPageViewControllers ausblenden?

Bearbeiten Hier ist mein Code wie gewünscht.

import UIKit

class TutorialController: UIPageViewController {

    let pageControl = UIPageControl.appearanceWhenContainedInInstancesOfClasses([])

    var currentview = "0"

    private func stylePageControl() {

        pageControl.currentPageIndicatorTintColor = UIColor.lightGrayColor()
        pageControl.pageIndicatorTintColor = UIColor.darkGrayColor()
        pageControl.backgroundColor = UIColor.whiteColor()
    }

    private func hidePageControl() { // this should let us hide the dots on the fourth view, by changing color.

        pageControl.backgroundColor = UIColor(red: 0.2980392157, green: 0.2980392157, blue: 0.2980392157, alpha: 1.0)
        pageControl.currentPageIndicatorTintColor = UIColor(red: 0.2980392157, green: 0.2980392157, blue: 0.2980392157, alpha: 1.0)
        pageControl.pageIndicatorTintColor = UIColor(red: 0.2980392157, green: 0.2980392157, blue: 0.2980392157, alpha: 1.0)
    }


    private(set) lazy var orderedViewControllers: [UIViewController] = {
        return [self.newViewController("1"),
                self.newViewController("2"),
                self.newViewController("3"),
                self.newViewController("4")]
    }()

    private func newViewController(number: String) -> UIViewController {
        return UIStoryboard(name: "Main", bundle: nil) .
            instantiateViewControllerWithIdentifier("Tutorial\(number)") // calls the next view controller.
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        stylePageControl() // just changing the color, this works.
        dataSource = self

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

    }
}

// MARK: UIPageViewControllerDataSource

extension TutorialController: UIPageViewControllerDataSource {

    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
        return orderedViewControllers.count

    }

    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
        guard let firstViewController = viewControllers?.first,
            firstViewControllerIndex = orderedViewControllers.indexOf(firstViewController) else {
                return 0
        }

        return firstViewControllerIndex
    }


    func pageViewController(pageViewController: UIPageViewController,
                            viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        guard let viewControllerIndex = orderedViewControllers.indexOf(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,
                            viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
        guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else {
            return nil
        }

        let nextIndex = viewControllerIndex + 1
        currentview = "\(nextIndex)"
        print("now on tutorial slide \(currentview)")
        if currentview == "4" { // this is called successfully when the fourth page comes into view.
            print("we are now on the fourth slide; hiding the page dots...") // this successfully prints.


      UIPageControl.appearanceWhenContainedInInstancesOfClasses([TutorialController.s‌​elf]).hidden = true // this should hide the all page controller dots, but it just doesn't work.
        pageControl.hidden = true // also should hide page controller dots, also doesn't work.
        hidePageControl() // this should change the color of the page controller dots, but doesn't (note that this function works to change color when I call it on viewDidLoad, but that's not where I want it; it doesn't work here).

        print(pageControl.hidden) // always prints false, even though I am trying to set it to true.

        }

        let orderedViewControllersCount = orderedViewControllers.count

        guard orderedViewControllersCount != nextIndex else {
            return nil
        }

        guard orderedViewControllersCount > nextIndex else {
            return nil
        }

        return orderedViewControllers[nextIndex]
    }

}

Antworten auf die Frage(10)

Ihre Antwort auf die Frage