2016-10-24 3 views
0

Я новичок использовать UIPageViewController,IOS - UIPageViewController перейти на предыдущую страницу, используя страницу локон эффект и номер страницы показать на каждой страницы

Я хочу сделать приложение, которое пойло влево и вправо с той же точки зрения. Я использую только один uitableview для бесконечного прокрутки uipageviewcontroller.

Table View

Это работает нормально, используя эффект прокрутки, но когда я с помощью страницы локон эффект, он только позволяет красть прямо и не пошел на предыдущую страницу.

Вот мой код PageViewController файла:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.dataSource = self; 
    self.delegate = self; 
    [self didMoveToParentViewController:self]; 
    _counter = 0; 

    [self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"memoTable"]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil]; 

    // Do any additional setup after loading the view. 
} 

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

#pragma mark PageViewController delegate method 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    NSLog(@"Child controller counter before = %d", _counter); 

    if ([viewController isKindOfClass:[PageController class]]) 
     return nil; 

    if(_counter < 1) { 
     return nil; 
    } 

    self.view.backgroundColor = [UIColor lightGrayColor]; 
    return [self.storyboard instantiateViewControllerWithIdentifier:@"memoTable"]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSLog(@"Child controller counter after = %d", _counter); 
    if ([viewController isKindOfClass:[PageController class]]) 
     return nil; 
    return [self.storyboard instantiateViewControllerWithIdentifier:@"pageView"]; 
} 

Так как я могу добиться этого с помощью страницы локон эффекта и проведите влево-вправо.

спасибо.

+0

Вы попробовали скручивание первой страницы вправо и влево? вы можете получить делегата левой руки? – CodeChanger

+0

Если я удаляю return nil; в счетчике <1, чем я получаю, что он работает обеими сторонами бесконечно. Но я хочу только правую сторону бесконечно в скручивании страницы. @Dhanesh – KAR

ответ

0

Поскольку вам нужно на одной стороне бесконечно, вам нужно проверить вас index и если его 0, а не return nil.

проверка некоторые методы PageViewController:

// Create the data model. 
     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
     _pageData = [[dateFormatter monthSymbols] copy]; 

- (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard { 
    // Return the data view controller for the given index. 
    if (([self.pageData count] == 0) || (index >= [self.pageData count])) { 
     return nil; 
    } 

    // Create a new view controller and pass suitable data. 
    DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 
    dataViewController.dataObject = self.pageData[index]; 
    return dataViewController; 
} 

- (NSUInteger)indexOfViewController:(DataViewController *)viewController { 
    // Return the index of the given data view controller. 
    // For simplicity, this implementation uses a static array of model objects and the view controller stores the model object; you can therefore use the model object to identify the index. 
    return [self.pageData indexOfObject:viewController.dataObject]; 
} 

#pragma mark - Page View Controller Data Source 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = [self indexOfViewController:(DataViewController *)viewController]; 
    if ((index == 0) || (index == NSNotFound)) { 
     return nil; 
    } 

    index--; 
    return [self viewControllerAtIndex:index storyboard:viewController.storyboard]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = [self indexOfViewController:(DataViewController *)viewController]; 
    if (index == NSNotFound) { 
     return nil; 
    } 

    index++; 
    if (index == [self.pageData count]) { 
     return nil; 
    } 
    return [self viewControllerAtIndex:index storyboard:viewController.storyboard]; 
} 

Вы должны управлять один массив также признать каждую вещь index | count.

в вышеуказанном случае self.pageData - это мой массив для управления страницами. , пожалуйста, дайте мне знать, если вам нужна помощь.

+0

Можете ли вы добавить свой массив и что такое DataViewController? @CodeChanger – KAR

+0

'DataViewController' ничего, кроме viewcontroller, который мне нужно показать при просмотре страницы. – CodeChanger

+0

Какие данные в вашем массиве? И как я могу использовать этот массив? @CodeChanger – KAR