Проблема с реализацией UIPageViewController

#swift

Вопрос:

Я пытаюсь реализовать прокрутку между двумя контроллерами просмотра, один из которых будет страницей сообщений, а другой-страницей камеры, аналогичной приложению snapchat. Если я не дал понять, что я прикрепил изображение с приложением, которое имеет точно такую же реализацию, как я пытаюсь сделать, у него есть 5 представлений, которые вы можете прокручивать между ними. изображение Теперь я попытался реализовать его несколькими способами. Один из них связан с UIPageViewController, фрагментом моего кода:

 class ViewController: UIViewController , UIPageViewControllerDelegate  {   var chatVC = one() var cameraVC= two() var array = [UIViewController]() var arr = [UIViewController]()   override func viewDidLoad() {  super.viewDidLoad()  view.backgroundColor = .white  self.array = [chatVC,cameraVC]  self.arr = [chatVC]      DispatchQueue.main.asyncAfter(deadline: .now()   1, execute: {  self.presentPageVC()    })               }  func presentPageVC(){  var vc = UIPageViewController.init(transitionStyle: .scroll, navigationOrientation: .horizontal , options: nil)  vc.delegate = self  vc.dataSource = self  vc.setViewControllers(self.arr, direction: .forward, animated: true, completion: nil)  self.present(vc, animated: true, completion: nil)  }            func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -gt; UIViewController? {  guard let index = self.array.firstIndex(of: viewController),indexgt;0 else {return nil}    let beforeIndex = index - 1      return self.array[beforeIndex] }  func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -gt; UIViewController? {  guard let index = self.array.firstIndex(of: viewController), index lt; (self.array.count-1) else {  return nil  }  var indexAfter = index   1    return self.array[indexAfter]   }  

С этой реализацией у меня есть одна проблема, когда я пытаюсь прокрутить последнюю страницу на cameraVC, справа от нее появляется вид позади нее. Как я мог отключить прокрутку, когда нет другой страницы ни до, ни после. Кроме того, я новичок в разработке программного обеспечения, если у кого-то есть лучшая идея для ее реализации, пожалуйста, дайте мне знать. Я застрял в попытке реализовать с помощью UICollectionView, потому что я не знаю, как преобразовать UIViewController в ячейку и как изменить ее в зависимости от делегата. Также при попытке добавить через UIScrollView я не понимаю, как я мог бы добавить подпросмотр UIViewController в UIScrollView, потому что он принимает только UIView. Заранее благодарю вас за помощь,

Комментарии:

1. Вы не выполнили основную настройку. Ваши PageViewController требования setViewControllers(_:direction:animated:completion:) .

2. @ElTomato дважды проверьте, что он там

3. Что это? vc.setViewКонтроллеры(self.arr, направление: .вперед, анимация: верно, завершение: ноль) И var chatVC = один()?

4. @ElTomato добавлен контроллер chatViewController, знаете ли вы лучшую реализацию для похожих фотографий snapchat, которые я предоставил, или вы знаете, как отключить прокрутку влево на первой странице и отключить прокрутку вправо на последней странице?

5. Откуда вы знаете, что они используют UIPageController ? Мне кажется, что у них есть подкласс UIViewController для создания собственного представления вкладок.

Ответ №1:

Для тех, кто хочет, чтобы UIScrollView не отображал представление при прокрутке, нет существующих представлений для прокрутки.

 scrollView.showsLargeContentViewer = false