【问题标题】:UIPageViewController Swipe ProgrammaticallyUIPageViewController 以编程方式滑动
【发布时间】:2016-08-01 01:03:40
【问题描述】:

我一直无法找到解决我的问题的解决方案。我正在寻找以编程方式调用我的页面视图控制器的两个代码块。

例如 [self viewControllerAfterViewController:self] 将调用最后一个代码块。

viewDidLoad

[super viewDidLoad];
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;

ViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"];
Request *pvc;
viewcontrollers =[NSArray arrayWithObjects:tvc, pvc, nil];

[self.pageViewController setViewControllers:viewcontrollers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

[self addChildViewController:pageViewController];
[self.view addSubview:pageViewController.view];

[self.pageViewController didMoveToParentViewController:self];

通过滑动手势在屏幕之间滑动的代码

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSLog([NSString stringWithFormat:@"%i", indexvalue]);

    if (indexvalue == 0 & check0 < 1) {
        check0 = 1;
        ViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"];
        indexvalue = 1;
        return tvc;
    }
    else {
        return nil;
    }
}

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSLog([NSString stringWithFormat:@"%i", indexvalue]);

    if (indexvalue == 1 & check1 < 1) {
        check1 = 1;
        Request *pvc = [self.storyboard instantiateViewControllerWithIdentifier:@"Friends"];
        indexvalue = 0 ;
        return  pvc;
    }
    else {
        return nil;
    }
}

【问题讨论】:

    标签: ios objective-c uiviewcontroller


    【解决方案1】:
    viewcontrollers =[NSArray arrayWithObjects:tvc, pvc, nil];
    
    replace with 
    
    viewControllers = @[tvc];
    viewControllers= [self viewControllerAtIndex:0];
    

    现在添加这个方法

    - (UIViewController *)viewControllerAtIndex:(NSUInteger)index
    {
        if (([self.pageTitles count] == 0) || (index >= [self.pageTitles count])) {
            return nil;
        }
    
        if (index == 0) {
       //first view
        ViewController *pageContentViewController2 = [self.storyboard  instantiateViewControllerWithIdentifier:@"ViewController"];
        return pageContentViewController2;
    
        }
        //second view
    
        Request *pageContentViewController3 = [self.storyboard instantiateViewControllerWithIdentifier:@"Request"];
        return pageContentViewController3;
    }
    

    【讨论】:

    • 如何从“ibaction”调用该方法?
    • 但你的问题不是为了说明你的问题
    • - (IBAction)startWalkthrough:(id)sender { ViewController *startingViewController = [self viewControllerAtIndex:0]; NSArray *viewControllers = @[startingViewController]; [self.pageViewController setViewControllers:viewControllers 方向:UIPageViewControllerNavigationDirectionReverse 动画:NO 完成:nil]; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2011-10-19
    • 1970-01-01
    相关资源
    最近更新 更多