我看了很多很多地方,还没有找到一些好的示例代码,展示如何在UIPageViewController中预加载"下一页".有对SO详细一些理论方面做了几个答案(见这个问题),但没有一个尚未发布的工作示例.
在我的应用程序的工作流程中,我每个屏幕显示1个页面,我希望预先加载"下一个"屏幕,因为实际上,滑动到下一页可能非常慢,有时需要2次滑动(如果你刷得太快)以便渲染和显示下一页.这提供了糟糕的用户体验.我并不关心预加载"之前"或任何其他屏幕,因为典型的工作流程是用户在移动到下一个屏幕(右侧)之前停留在屏幕上一段时间.我正在使用幻灯片动画(不卷曲).我以编程方式创建所有视图,并且根本不使用IB.
我试图在NSMutableArray中存储一些UIViewControllers并从那里加载控制器,但是要正常工作并且似乎没有加速任何事情是很棘手的.必须有一个很好的方法来做到这一点.
任何帮助是极大的赞赏.
我已经设置了一个“UIViewController”(嵌入在“UINavigationController”中),并且“UIViewController”有一个带有“UIPageViewController”的“ContainerView”。
在“UIPageViewController”中有几个带有“UITableViews”的子视图。
现在的问题是,如果 TableView(嵌入在 ContainerView 中)滚动,启用“首选大标题”的“UINavigationBar”不会折叠。
我认为这是“UIPageViewController”的问题。大小与 ContainerView 相同。
我该如何解决这个问题?

我正在使用构建应用程序UIPageViewController.它正如我预期的那样工作,直到它到达包含UITextField数量的最后一页.
但当我点击UITextField的一个实例时,它突然跳转到上一页而没有任何理由而不是显示键盘.当我滚动到最后一页并再次点击文本字段时,它运行良好没有任何问题.
通过点击链接到最后一页并附加到UIPageViewController实例的导航按钮,它立即显示最后一页也很好.
只有当我从第一个页面滚动到最后一个页面时才会出现此问题,并且在第一次尝试时仅发生一次.
我怀疑内存不足问题,所以我在didReceiveMemoryWarningUIPageViewController实例和最后一个页面视图控制器的方法中设置了断点.但他们从未被召唤过.
第二个尝试是我在最后一个页面视图控制器的-willMoveToParentViewController:方法中添加了一个断点并将其条件设置为parent == nil(当它从父视图控制器中删除时,这是有问题的UIPageViewController实例)
当我运行应用程序时,断点的调用堆栈表示该方法由UIPageViewController调用-_flushViewController:animated:.
我不知道为什么这个-flushViewController:animated:被调用.如果我能找出原因,它将帮助我解决问题.
有没有人可以帮助我?
在我的应用程序中,我有一个RootPageViewController,它包含UIPageViewController和一个或多个DetailPageViewController,UITableView作为子视图.
DetailPageViewController
/
RootPageViewController - DetailPageViewController
\
DetailPageViewController
Run Code Online (Sandbox Code Playgroud)
在每个DetailPageViewController的顶部是一个小空间,应该可以滑动并转到下一个DetailPageViewController.
-------------------
| |
| | -> UIPageViewController should respond to pan's
| |
|-------------------| --------------------------------------------
| CellContent |
|-------------------|
| CellContent |
|-------------------| -> UIPageViewController should disable UIPageViewController pan's
| CellContent |
|-------------------|
| ... |
Run Code Online (Sandbox Code Playgroud)
在iOS 7天气应用程序是一个滚动视图与整个弱预测谁不知何故覆盖或禁用UIPageViewController的平底锅.
我该如何重现这种行为?
很抱歉找不到截图
cocoa-touch objective-c uigesturerecognizer uipageviewcontroller
我发现自己需要实现以下功能:滚动页面并显示tableview或collectionview,其中的数据仅与屏幕下方的特定页面相关.首先,我尝试使用嵌套的UICollectionViews,使外部UICollectionView的单元格成为屏幕的大小,并将内部UICollectionView的委托设置为包含单元格(外部UICollectionView的单元格).我遇到了未正确加载到内部Collection视图中的数据问题.在这个问题中更好地描述了这个问题:嵌套UICollectionViews问题
无论如何,我更多地关注UIPageViewController作为问题的可能解决方案.我以前从未实现过UIPageViewController,也不确定这是否适合我的问题.如果有人之前做过类似的事情,请指引我到正确的地方或资源.
如果可能的话,我仍然希望使用嵌套的UICollectionViews,我不太明白它为什么会按预期工作.我的问题再次在上面的链接中得到了更好的描述.请告知两种选择.
ios uipageviewcontroller uicollectionview uicollectionviewcell
我UIPageViewController在新游戏中添加了一条说明,我想UIPageViewController在用户按下UIViewController连接到最后一个的"GOT IT"按钮后关闭UIPageViewController
到目前为止我试过这个:
[self.pageVC dismissViewControllerAnimated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
并没有删除UIPageViewController,为什么?
我该怎么解雇呢?
为了展示/展示UIPageViewController我这样做:
[self addChildViewController:self.pageVC];
[self.view addSubview:self.pageVC.view];
[self.pageVC didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)
10x提前!
我有包含VC的uipageviewcontroller.与任何pageviewcontroller一样,您可以向左滑动,向右滑动以更改VC.每次动画完成后,我都会添加gestureRecognizer.我的问题是如何检查视图是否有特定的识别器?我需要这样的代码:
if check view has specific recognizer == false {
add recognizer
}else{
just skip.
}
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我有侧边栏.当Sidebarmenu出现时,我想为当前索引pagecontentviewcontroller添加手势.所以,我的代码工作正常,我只是不想每次动画结束时添加手势.
我正在添加代码.问题是我的手势是在其他类(非当前)中创建的.首先,我创建了我保持手势的类实例:
let transtionManger = TransitionManger()
Run Code Online (Sandbox Code Playgroud)
添加此类名为exitPanGesture的var之后:
pageContentViewController.view.addGestureRecognizer(transtionManger.exitPanGesture3)
Run Code Online (Sandbox Code Playgroud)
问题是我每次出现视图时都会添加它.我想在添加之前检查手势是否存在.我不想每次都添加它.
我有一个处于工作状态的应用程序,其中我有三个屏幕1,2,3每个屏幕都与一个UICollectionView以编程方式创建的关联现在我想修改当前实现并将这些集合视图添加到UIPageViewControllers.
我试图用CollectionViews找到许多与PageViewController相关的教程,但却找不到任何东西.任何人都可以帮我实现这个或者可以给我一个与此相关的参考.
我也提到了这个教程,但对我来说很难:(
我有一个QuizViewController延伸的UIViewController,UIPageControllerDelegate和UIPageViewControllerDataSource.
在QuizViewController.swift里面
private var pageViewController: UIPageViewController?
private func createPageViewController() {
let pageController = self.storyboard!.instantiateViewControllerWithIdentifier("QuizPageViewController") as! UIPageViewController
pageController.dataSource = self
if pageInfo.count > 0 {
let firstController = getItemController(0)!
let startingViewControllers: NSArray = [firstController]
pageController.setViewControllers(startingViewControllers as? [UIViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
}
pageViewController = pageController
addChildViewController(pageViewController!)
self.view.addSubview(pageViewController!.view)
pageViewController!.didMoveToParentViewController(self)
}
private func getItemController(itemIndex: Int) -> QuizPageItem? {
if itemIndex < pageInfo.count {
let CurrentQuizPageItem = self.storyboard!.instantiateViewControllerWithIdentifier("QuizPageItem") as! QuizPageItem
CurrentQuizPageItem.itemIndex = …Run Code Online (Sandbox Code Playgroud) 我已经设置了具有 2 个视图的 PageViewControll。我可以在视图之间移动,并且 pageControl(点)对应于正确的页面 - 但是点击点还不能滚动到正确的视图。
我在这里找到了一些关于如何创建该函数的答案,但无法成功实现以使其工作。页面控制器的代码如下(没有点击功能)完整的代码是:
func configurePageControl() {
pageControl = UIPageControl(frame: CGRect(x: 0,y: UIScreen.main.bounds.maxY - 50,width: UIScreen.main.bounds.width,height: 50))
self.pageControl.numberOfPages = viewControllerList.count
self.pageControl.currentPage = 0
self.pageControl.alpha = 0.5
self.pageControl.tintColor = UIColor.white
self.pageControl.pageIndicatorTintColor = UIColor.black
self.pageControl.currentPageIndicatorTintColor = UIColor.white
self.view.addSubview(pageControl)
}
@IBAction func pageControltapped(_ sender: Any) {
guard let pageControl = sender as? UIPageControl else { return }
let selectedPage = pageControl.currentPage
self.setViewControllers([viewControllerList[selectedPage]], direction: .forward, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!!
ios ×8
swift ×4
objective-c ×2
cocoa-touch ×1
gestures ×1
ios6 ×1
ipad ×1
pageviews ×1
swift4 ×1
xcode ×1