Tag: uipageviewcontroller

UIPageViewController手势正在调用viewControllerAfter:但不animation

我有一个非常有趣的UIPageViewController问题。 我的项目设置与示例页面基础应用程序模板非常相似。 每隔一段时间(但在某种程度上可重现)一个特定的平移手势将调用-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 。 我返回下一页的视图控制器,但页面翻转animation永远不会运行,我的委托方法永远不会被调用。 这里是viewControllerAfterViewController的代码 -(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { PageDisplayViewController *vc = (PageDisplayViewController *)viewController; NSUInteger index = [self.pageFetchController.fetchedObjects indexOfObject:vc.page]; if(index == (self.pageFetchController.fetchedObjects.count – 1)) return nil; return [self getViewControllerForIndex:(++index)]; } 这里是getViewControllerForIndex: -(PageDisplayViewController *)getViewControllerForIndex:(NSUInteger)index { PageDisplayViewController *newVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PageDisplayController"]; newVC.page = [self.pageFetchController.fetchedObjects objectAtIndex:(index)]; newVC.view.frame = CGRectMake(0, 0, 1024, […]

如何删除UIPageViewController的底部空隙

我正在使用UIPageViewController来显示全屏图像,UIViewController被添加到UIPageController作为子视图/子使用ImageView显示的图像。 问题是图像arent全屏,而不是页面控制视图的donts出现在底部,该空间是完全浪费。 请检查附加的图像。 这是代码 self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; self.pageController.dataSource = self; [[self.pageController view] setFrame:[[self view] bounds]]; NewsItemViewController *initialViewController = [self viewControllerAtIndex:0]; NSArray *viewControllers = [NSArray arrayWithObject:initialViewController]; [self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; [self addChildViewController:self.pageController]; [[self view] addSubview:[self.pageController view]]; [self.pageController didMoveToParentViewController:self]; 这里NewsItemViewController是显示图像和一些文本的UIViewController,MainViewController在MainViewController中实现了UIPageViewControllerDataSource协议和必要的方法。 我相信必须有一种方法来全屏显示。 ***另外,MainViewController是一个故事板的一部分,如果重要的话。

topLayoutGuide在子视图控制器中

我有一个UIPageViewController与半透明的状态栏和导航栏。 它的topLayoutGuide是64像素,正如所料。 但是, UIPageViewController的子视图控制器报告0像素的topLayoutGuide ,即使它们显示在状态栏和导航栏下方。 这是预期的行为? 如果是这样的话,真正的topLayoutGuide下定位子视图控制器视图的最好方法是什么? (使用parentViewController.topLayoutGuide ,我认为这是一个黑客)

在UIPageViewController中获取用户滑动方向

viewControllerBeforeViewController和viewControllerAfterViewController这两个方法不会告诉滑动的方向。 UIPageViewController委托的transitionCompleted方法对我们也没什么帮助。 它只是告诉如果页面被完全刷了。 那么我应该用什么方法来检测用户的方向(左或右)? 可能这两个属性可能有帮助: let directionForward = UIPageViewControllerNavigationDirection.Forward let directionReverse = UIPageViewControllerNavigationDirection.Reverse 我的代码如下所示: import UIKit class ProView: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate { var pageViewController: UIPageViewController? let characterImages = ["character1", "character2", "character1", "character2", "character1", "character2", "character1", "character2"] override func viewDidLoad() { super.viewDidLoad() createPageViewController() setupPageControl() character = 1 } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } // Forward, […]

PageViewController委托函数被调用两次

我正在使用UIPageViewController来为我的应用程序进行产品导览。 我跟着这个链接http://www.appcoda.com/uipageviewcontroller-tutorial-intro/ 我正在做的是简单的任务,改变我的“根VC”滑动的背景颜色,基于我得到的索引值,但由于委托函数被调用两次,我的指数值是不正确的,因此,我不是能够得到它的权利,下面是我的代码 #import "APPViewController.h" #import "APPChildViewController.h" @interface APPViewController () @end @implementation APPViewController – (void)viewDidLoad { [super viewDidLoad]; self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; self.pageController.dataSource = self; [[self.pageController view] setFrame:CGRectMake(0, 0, 320, 500)]; APPChildViewController *initialViewController = [self viewControllerAtIndex:0]; NSArray *viewControllers = [NSArray arrayWithObject:initialViewController]; [self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; [self addChildViewController:self.pageController]; [[self view] addSubview:[self.pageController view]]; […]

使用UIPageViewController和swift和多视图控制器

我试图在多个视图控制器的Swift应用程序中使用UIPageViewController 。 我有两个视图控制器在我的故事板( firstViewController和secondViewController )都embedded在自己的导航控制器。 他们有故事板标识符“ FirstViewController ”和“ SecondViewController ”。 我也有一个页面视图控制器在我的故事板与identifierPageView控制器,并将导航设置为水平和过渡样式滚动属性检查器。 FirstViewController是应用程序的根视图控制器 我想firstViewController成为页面视图控制器的第一页,所以我写了它的类如下所示: import Foundation import UIKit class FirsttViewController: UITableViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate { override func viewDidLoad() { let pageViewController: PageViewController = self.storyboard.instantiateViewControllerWithIdentifier("PageViewController") as PageViewController pageViewController.delegate = self var viewControllers: [UIViewController] = [self] pageViewController.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil) pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height) […]

如何实现使用多个ViewController的UIPageViewController

我一直在一个简单的testing应用程序来学习UIPageViewController的来龙去脉。 我有它的工作,但我不相信我的执行是最好的方法。 我希望你们中的一些人能把我指向正确的方向。 为了获得基本的理解,我以本教程为出发点。 http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/ 本教程将创build一个应用程序,该应用程序为viewController提供的每个页面使用一个UIPageViewController 。 不过,我需要利用UIPageViewController来滚动具有完全不同布局的页面。 因此,为了让本教程更进一步,我创build了一个在详细视图中使用UIPageViewController来显示三个不同视图控制器的主 – 细节应用程序。 我坚持只显示这个testing应用程序的图像和标签,但我目前正在build设的应用程序有三个viewController将包含tableview,imageView和textViews,或一些textFields。 这是我的testing应用程序的故事板。 我使用DetailViewController作为PageViewController的数据源。 在DVC的viewDidLoad中,我以这种方式build立将在三个内容视图控制器firstViewController , secondViewController和thirdViewController中使用的标签和图像。 if ([[self.detailItem description] isEqualToString:@"F14's"]) { //Here the page titles and images arrays are created _pageTitles = @[@"Grim Reapers", @"Breakin the Barrier!", @"Top Gun"]; _pageImages = @[@"F14_Grim.jpg", @"F14boom.jpg", @"F14_topgun.jpg"]; //Here I call a method to instantiate the viewControllers FirstController […]

禁用UIPageViewController反弹

为这个search了很多,但是还找不到合适的解决scheme。 是否有可能禁用UIPageViewController的反弹效果,仍然使用UIPageViewControllerTransitionStyleScroll ?

UIPageViewController:返回当前可见的视图

你怎么知道UIPageViewController显示的当前页面/视图是UIPageViewController ? 我已经重写了我的子视图的viewDidAppear方法,以便他们在viewDidAppear方法中向父视图发送一个id。 但是,问题是这样的:我不能可靠地使用该ID作为显示页面的ID。 因为如果用户翻页而中途决定停止翻页并放回页面,则viewDidAppear已经被调用。 (视图在curl页面后面可见)。 也许我应该只切换到一个新的ID如果当前视图消失。 但是,我想知道是否没有更简单的方法来返回当前可见的视图?