在故事板中我有一个UIPageViewController,这是我的代码
class ReservedTimesViewController: UIPageViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
extension ReservedTimesViewController: UIPageViewControllerDataSource {
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ReservedTimesTableViewController")
print(controller)
return controller
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ReservedTimesTableViewController")
print(controller)
return controller
}
Run Code Online (Sandbox Code Playgroud)
这是我的ReservedTimesTableViewController故事板

但我遇到黑屏。为什么它不能正常工作?
我正在尝试使用 NEXT 按钮更改 UIPageViewController 的当前 ViewController。因此,我使用委托调用 mainViewController 中的 containerViewController 中的函数。但它不执行 setViewControllers 行。
在这里你可以看到我的代码:
这是我使用委托调用的方法:
func forwardPage() {
print("Start")
currentPage += 1
print(vcs[currentPage])
self.setViewControllers([vcs[currentPage]], direction: .forward, animated: true) { (true) in
print("Done")
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的代表:
protocol WalkthroughViewControllerDelegate {
func forwardPage()
func currentIndex() -> Int
}
Run Code Online (Sandbox Code Playgroud)
这是连接到我的 NEXT 按钮的功能:
@IBAction func nextButtonTapped(_ sender: Any) {
if let index = delegate?.currentIndex() {
print("Here... \(index)")
switch index {
case 0...1:
print("Forwarding...")
delegate?.forwardPage()
case 2:
dismiss(animated: true, completion: nil)
default: break
}
}
updateUI()
} …Run Code Online (Sandbox Code Playgroud) 我知道这个问题是典型的,并且在论坛上被多次询问,但我仍然无法解决我的问题,所以如果任何机构可以帮助那将是伟大的:)
我正在用阿拉伯语创建一个书籍应用程序,我需要从右到左执行uipageviewcontroller的转换.这就是我要说的.
还有一件事(如果我没有很好地解释我自己)我有这个线程的确切需要:如何更改UIPageViewController分页卷曲动画的方向,但我无法设法他们谈到的解决方案,所以如果有人可以解释我或给我一个链接,我可以有如何做到这将是绰绰有余:)
我已经烧了几个小时.我已经初始化UIPageViewController用UIPageViewControllerNavigationOrientationHorizontal,但由于某种原因viewControllerBeforeViewController被称为当用户锅垂直.
此外,当发生这种情况时,没有页面翻转,didFinishAnimating:didFinishAnimating:previousViewControllers:transitionCompleted根本不会被调用.这意味着页面视图控制器知道这是一个垂直运动..
这是初始化代码 -
- (void)initPageViewController
{
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
self.pageViewController.delegate = self;
self.pageViewController.dataSource = self;
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
// Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages.
self.pageViewController.view.frame = self.view.bounds;
[self.pageViewController didMoveToParentViewController:self];
// Leave only pan recognizers enabled, so buttons positioned inside a page would work.
for (UIGestureRecognizer *gr in self.pageViewController.gestureRecognizers)
{ …Run Code Online (Sandbox Code Playgroud) 我想知道如何实现会影响UIPageViewController模型的按钮.例如,我希望我的UIPageViewController模型数组加载其中的单个对象,当点击一个按钮时,将添加一个新的视图控制器,并自动翻转页面或类似的东西(如在Notes应用程序中).删除用户正在查看的当前对象也是如此.
到目前为止,我尝试通过向我的根视图控制器实现一些IBActions但到目前为止没有运气.
以下是我实现ViewController类的方法:
@implementation ViewController
@synthesize modelArray = _modelArray;
@synthesize pageVC = _pageVC;
#pragma mark - UIPageViewControllerDataSource Methods
// Returns the view controller before the given view controller. (required)
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentVC *)viewController labelContents]];
if(currentIndex==0)
return nil;
ContentVC *cVC = [[ContentVC alloc] init];
cVC.labelContents = [self.modelArray objectAtIndex:currentIndex-1];
return cVC;
}
// Returns the view controller after the given view controller. (required)
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger currentIndex = …Run Code Online (Sandbox Code Playgroud) 基本上,我有一个表视图控制器和一个普通的视图控制器,我想这样做,以便我可以在视图控制器之间滑动,如在应用程序的主屏幕上(明显相同类型的视图控制器).
但我发现的是,UIpageviewcontroller当您有多个相同类型的视图时viewcontroller,例如在图片之间滑动,可以使用它,您可以在类中设置一个索引,并设置与索引相关的图像数组并进行设置那样.
但我正试图在这个设置中获得不同的视图控制器.现在它是两个但肯定会达到4左右.
是UIPageViewController正确的设置方式还是其他方式.
编辑:下面添加的代码
//
// ViewController.m
// testb
//
#import "MainPostController.h"
#import "MainTableViewController.h"
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize pageViewController;
@synthesize indexValue = _indexValue;
- (void)viewDidLoad
{
[super viewDidLoad];
self.indexValue= 1;
NSLog(@"main intitated");
// Do any additional setup after loading the view, typically from a nib.
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
self.pageViewController.dataSource = self;
MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
MainPostController *pvc;
NSArray *viewcontrollers =[NSArray arrayWithObjects:tvc, pvc, nil];
[self.pageViewController setViewControllers:viewcontrollers direction:UIPageViewControllerNavigationDirectionForward …Run Code Online (Sandbox Code Playgroud) 在结束这个问题之前,我只是看到过去两天我面临一个严重的问题.
我正在关注UIPageViewController与故事板教程.
我试着开发我的UIPageviewController.我要展示一些用户照片.我不想在底部显示apagecontrol,所以我创建了一个自定义页面控件.当我尝试将索引设置为UIPageControl时,它无法正常工作 - 有些延迟有时会达到第5页而只是更新,因此计数不正确
这是我的数据源:
-(UIViewController*)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSUInteger index = ((BMEnlargePhotoPageView*) viewController).pageIndex;
[self.enlargePhotoPageControl setCurrentPage:index];
if((index == 0 ) || (index==NSNotFound)){
return nil;
}
index--;
return [self viewControllerATindex:index];
}
-(UIViewController*)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
NSUInteger index = ((BMEnlargePhotoPageView*) viewController).pageIndex;
[self.enlargePhotoPageControl setCurrentPage:index];
if(index==NSNotFound){
return nil;
}
index++;
if(index==[self.userImages count])
{
return nil;
}
return [self viewControllerATindex:index];
}
- (BMEnlargePhotoPageView*)viewControllerATindex:(NSUInteger)index
{
if(([self.userImages count]==0) || (index >= [self.userImages count])){
}
BMEnlargePhotoPageView *PageContentViewControl = [self.storyboard instantiateViewControllerWithIdentifier:@"EnlargePhoto"];
PageContentViewControl.imageFIle =self.userImages[index];
PageContentViewControl.pageIndex …Run Code Online (Sandbox Code Playgroud) 我在一个ViewController中有3个ViewControllers
ViewPagerController = self - >它是一个viewController并具有UIPageViewController init
ProgramQuestionViewController =它基于ViewPagerController
QuestionViewController =我的内容视图它显示在ProgramViewController的中间
这是我的ViewPagerController
@interface ViewPagerController () <UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate,UIGestureRecognizerDelegate>
{
NSMutableArray *dataAnswers;
}
@property UIScrollView *tabsView;
@property UIView *contentView;
@property UIPageViewController *pageViewController;
@property (assign) id<UIScrollViewDelegate> actualDelegate;
@property (assign)bool isValidPage;
@property (assign)bool isSonraki;
// Tab and content cache
@property NSMutableArray *tabs;
@property NSMutableArray *contents;
// Options
@property (nonatomic) NSNumber *tabHeight;
@property (nonatomic) NSNumber *tabOffset;
@property (nonatomic) NSNumber *tabWidth;
@property (nonatomic) NSNumber *tabLocation;
@property (nonatomic) NSNumber *startFromSecondTab;
@property (nonatomic) NSNumber *centerCurrentTab;
@property (nonatomic) …Run Code Online (Sandbox Code Playgroud) objective-c ipad uigesturerecognizer ios uipageviewcontroller
我有一个pageViewController显示每个索引的背景图像.它可以从左向右(向前)轻扫,但是当您反向滑动时,背景图像会相互重叠.在我实现背景图像之前,每个VC上的UI工作正常和反向,所以我知道它是背景图像.此外,如果我改为page curl而不是scroll在我的storyboard反向工作正常,只是不起作用scroll.这显然是一个已知的错误(从UIPageViewController中删除视图控制器)但是我需要一个Swift解决方案.
pageviewController:
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
guard
let currentPageViewController = viewController as? SinglePageViewController,
let currentIndex = indexOfForecast(currentPageViewController.forecast!) as? Int where currentIndex != 0 else { return nil } //fixed bug where index was -0 only on scroll
return viewControllerAtIndex(currentIndex - 1)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
guard
let lastForecast = forecasts?.last,
let currentPageViewController = viewController as? SinglePageViewController, …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我使用UIPageViewController在5个子UIViewController之间滑动.在一些子视图控制器中,我需要禁用UIPageViewController的滑动手势,因此当用户滑动它时不会更改为其他视图.那我怎么能禁用子视图控制器的滑动?
感谢您的帮助.谢谢