Мои жесты контроллера просмотра страниц перехватываются? - PullRequest
0 голосов
/ 17 апреля 2019

Я следовал руководству pageviewcontroller, чтобы создать слайдер изображений.Затем я адаптировал его для вставки в ячейку просмотра таблицы, так как мне нужен слайдер изображений внутри таблицы.

Мне нравится идея использовать этот же код в полноэкранном режиме или встроить в другое представление.

Однако, когда я делаю это, события pageviewafter и pageviewbefore не запускаются при скольжении.Я подозреваю, что tableviewcontroller или ячейка поглощают события, поэтому pageviewcontroller не получает их.

Я в лучшем случае являюсь разработчиком ios на неполный рабочий день, поэтому я ищу любые предложения, которые я могу проверить / преодолеть мою проблему.

Некоторая часть кода в соответствии с просьбой.Я добавляю свой PageViewController после завершения обратного вызова получения изображений.plantPhotoContainerView - это UIView внутри статической ячейки, которая была добавлена ​​вместе с раскадровкой.

self.plantPhotoContainerView.addSubview(vc.view)

Pageviewcontroller устанавливает делегата для себя, и в настоящее время я игнорирую изображения, передаваемые в контроллер, и просто использую некоторые тестовые изображения:

class ImageSliderViewController: UIPageViewController, UIPageViewControllerDataSource {
    init(images: [String]) {
        super.init(transitionStyle: UIPageViewController.TransitionStyle.scroll, navigationOrientation: UIPageViewController.NavigationOrientation.horizontal, options: nil)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    var images = ["Growers", "Home", "Media"]

    override func viewDidLoad() {
        super.viewDidLoad()

        dataSource = self

        view.backgroundColor = UIColor.yellow

        let imageViewController = ImageViewController()
        imageViewController.imageName = images.first
        let viewControllers = [imageViewController]

        setViewControllers(viewControllers, direction: .forward, animated: true, completion: nil)
    }

    override func viewDidLayoutSubviews() {
        self.view.translatesAutoresizingMaskIntoConstraints = false
        view.leftAnchor.constraint(equalTo: view.superview!.leftAnchor).isActive = true
        view.rightAnchor.constraint(equalTo: view.superview!.rightAnchor).isActive = true
        view.topAnchor.constraint(equalTo: view.superview!.topAnchor).isActive = true
        view.bottomAnchor.constraint(equalTo: view.superview!.bottomAnchor).isActive = true
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
        let currentImageName = (viewController as! ImageViewController).imageName!
        let currentIndex = images.firstIndex(of: currentImageName)!

        if currentIndex < images.count - 1 {
            let imageViewController = ImageViewController()
            imageViewController.imageName = images[currentIndex + 1]

            return imageViewController
        }

        return nil
    }

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
        let currentImageName = (viewController as! ImageViewController).imageName!
        let currentIndex = images.firstIndex(of: currentImageName)!

        if currentIndex > 0 {
            let imageViewController = ImageViewController()
            imageViewController.imageName = images[currentIndex - 1]

            return imageViewController
        }

        return nil
    }
}

1 Ответ

0 голосов
/ 27 апреля 2019

Хорошо, в конце концов я нашел пост, который помог. При добавлении подпредставления требуются две дополнительные строки для передачи функций жестов по умолчанию в контроллер viewview. Надеюсь, что это помогает другим.

self.addChild(vc)
self.plantPhotoContainerView.addSubview(vc.view)
vc.didMove(toParent: self)

Если честно, я не до конца понимаю, что это делает, может быть, кто-то лучше разбирается в стремительной структуре.

...