2015-12-21 17 views
0

我有兩個標識符爲「one」和「two」的故事板,我有一個UIPageViewController及其子類。在子類中,我有以下代碼:如何刪除UIPageViewController上的無限滾動條?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.dataSource = self; 
    self.delegate = self; 
    counter = 0; 

    [self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"one"]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 

    if ([viewController isKindOfClass:[ViewController class]]){ 
    return [self.storyboard instantiateViewControllerWithIdentifier:@"one"]; 
    } 

    return nil; 


} 


- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 

    if ([viewController isKindOfClass:[secondViewController class]]){ 
    return [self.storyboard instantiateViewControllerWithIdentifier:@"two"]; 
    } 

    return nil; 

} 

此代碼工作得很好,但有問題!卷軸是無限的;在我的情況下,我需要取消無限滾動。我如何做到這一點?

第一件事情就是創建一個計數器,做我的方法裏面檢查:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 

    if (counter < 1) { 
     NSLog(@"Don't get back"); 
     return nil; 
    } 

    ...... 

} 


- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 

    if (counter >= 1) { 
     NSLog(@"Don't go anymore"); 
     return nil; 
    } 

    .... 
} 

的第二件事是嘗試使用櫃檯++counter--。這對我來說是一個很大的難題,任何人有更好的想法?

+0

是否「一」標識代表了'ViewController'和「兩節」標識代表'secondViewController'在你的故事板? – spassas

+0

是的,像你說的! – LettersBa

+0

然後你的控制語句看起來是錯誤的(反過來更準確)。例如,在'pageViewControllerAfterViewController'中,只有在當前的'viewController'類是'ViewController類'類而不是'如您所寫的'secondViewController類''時,才需要下一個VC – spassas

回答

1

如果你只有兩個頁面,那麼只要檢查你什麼時候獲得一個頁面的請求,如果當前頁面不是你要提供的頁面。爲此,您需要一種方法來識別它。

如果每個頁面都有不同的類別,您可以簡單地檢查該類別。否則,你需要一些其他的標準。

如果使用自定義類:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    if ([viewController isKindOfClass:[ClassOfSecondViewController class]]) 
    { 
     return [self.storyboard instantiateViewControllerWithIdentifier:@"one"]; 
    } 

    return nil; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    if ([viewController isKindOfClass:[ClassOfFirstViewController class]]) 
    { 
     return [self.storyboard instantiateViewControllerWithIdentifier:@"two"]; 
    } 
    return nil; 
}