0

Je suis en train de mettre en œuvre quelque chose comme le centre de notification pour mon application:Gestures ne fonctionne pas pour UIPageViewController qui contient UITableViewControllers

Il y a une UIPageViewController que je veux que le mouvement vers la gauche/gestes droit au travail et à l'intérieur que je dois afficher 4 UITableViewControllers. En haut il y a un UISegmentedCotrol pour montrer "quel onglet est sélectionné"

Tout fonctionne, sauf les gestes de balayage pour changer les pages, comme si le TableView capturait les gestes et ne laissait pas le PageView faire son travail.

Je n'ai pas besoin que mes TableViews soient éditables, car ce ne sont que des articles d'un site Web. Seul le didSelectRowAt(indexPath) est suffisant pour faire tout ce que je dois (Segue à un « articleViewController).

Si quelqu'un a une idée comment garder les gestes de UIPageViewController travailler avec un TableViewController moi à l'intérieur de savoir. Nous vous remercions

+0

Nous avons fini à l'aide d'une bibliothèque à cet effet, [XLPagerTabStrip] (https://github.com/xmartlabs/XLPagerTabStrip) Je le recommande à toute personne ayant une situation similaire car il prend en charge –

Répondre

0

var = pageviewController UIPageViewController()

pageviewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil) 

    pageviewController.view.frame = CGRect(x: 0, y: 0, width: 320 , height: 568) 

    pageviewController.setViewControllers([arrayControllers[0]], direction: .forward, animated: false, completion: nil) 

    addChildViewController(pageviewController) 
    viewToAdd.addSubview(pageviewController.view) 
    pageviewController.didMove(toParentViewController: self) 

let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture)) 
    swipeRight.direction = UISwipeGestureRecognizerDirection.right 

    self.view.addGestureRecognizer(swipeRight) 
    let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture)) 
    swipeLeft.direction = UISwipeGestureRecognizerDirection.left 
    self.view.addGestureRecognizer(swipeLeft) 

func respondToSwipeGesture(gesture: UIGestureRecognizer) { 
    if let swipeGesture = gesture as? UISwipeGestureRecognizer { 
     switch swipeGesture.direction { 
     case UISwipeGestureRecognizerDirection.right: 
      //right view controller 

      print("Swipe Right") 

     case UISwipeGestureRecognizerDirection.left: 
      //left view controller 

      print("Swipe left") 

     default: 
      break 
     } 
    } 
} 
+0

Merci, mais cela ne fonctionne pas en m y cas ... J'instancie le PageViewController de Storyboard et chaque TableViewController en code. Je veux garder le comportement par défaut (de pouvoir glisser entre les "pages" visuellement), ce qui fonctionne Si je n'utilise pas un TableViewController (ou même si je passe d'un UIViewController normal à un UITableViewController) mais pas le contraire –