【问题标题】:Why Code in PageViewController is occurring twice?为什么 PageViewController 中的代码会出现两次?
【发布时间】:2014-11-26 15:31:50
【问题描述】:

我在createViewController() 方法中创建pageViewController。我定义了UIPageViewController 的一个属性,即self.pageController。 由于重复代码块,当这些页面打开时,当我们离开滚动页面时,它也会显示在视图后面。

func createPageController()
    {
        var deviceFrame:CGSize = UIScreen.mainScreen().bounds.size
        self.pageController = UIPageViewController(transitionStyle: UIPageViewControllerTransitionStyle.Scroll,
            navigationOrientation: UIPageViewControllerNavigationOrientation.Horizontal,
            options: [UIPageViewControllerOptionInterPageSpacingKey : 0])

            self.pageController!.view.frame = CGRectMake(0,108, deviceFrame.width, deviceFrame.height-110)
            self.dailyChallengeViewController = UIStoryboard(name: "Main_iPhone", bundle: nil).instantiateViewControllerWithIdentifier("DailyChallengeViewController") as? DailyChallengeViewController
            self.winnersViewController = UIStoryboard(name: "Main_iPhone", bundle: nil).instantiateViewControllerWithIdentifier("WinnersViewController") as? WinnersViewController

// All the below code will repeat 1 more time
 self.winnersViewController!.view.frame = self.pageController!.view.frame
        self.dailyChallengeViewController!.view.frame = self.pageController!.view.frame

        self.dailyChallengeViewController!.index = 0
        self.winnersViewController!.index = 1

        self.viewControllers = [self.dailyChallengeViewController!,self.winnersViewController!]
        self.pageController!.setViewControllers([self.dailyChallengeViewController!],
            direction:UIPageViewControllerNavigationDirection.Forward,
            animated:false,
            completion:nil)
        self.addChildViewController(self.pageController!)

        self.view.addSubview(self.pageController!.view)

        self.pageController!.dataSource = self
        self.pageController!.delegate = self

 self.pageController!.didMoveToParentViewController(self)
}

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?{
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?{
}

【问题讨论】:

    标签: ios objective-c swift


    【解决方案1】:

    据我了解,很多人都有这个问题。

    这是因为 viewControllerBeforeViewControllerviewControllerAfterViewController

    建议使用 willTransitionToViewControllers 来获取 PVC 的当前索引以及上述其他两种方法。

    换句话说,如果您希望在索引 x 处发生特定的事情,请在 willTransitionToViewControllers 委托方法中编写 if 语句。

    希望对你有帮助!

    PageViewController delegate functions called twice

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 2016-09-24
      • 2015-03-11
      • 1970-01-01
      相关资源
      最近更新 更多