2012-12-08 19 views
2

我使用UIPageViewController一次顯示兩個視圖控制器。在顯示幾個這樣的視圖後,我想顯示單個視圖控制器而不更改方向,它固定爲橫向。我在iPad上製作。UIPageviewController - 從兩頁模式切換到一頁模式而不改變方向

下面是我使用此代碼:

-(id)initWithViewControllers:(NSMutableArray *)Controllers 
{ 
self = [super initWithNibName:nil bundle:nil]; 
if(self) 
{ 
    self.VControllers = Controllers; 

    pageController = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation: UIPageViewControllerNavigationOrientationHorizontal options:nil]; 

    self.pageController.view.frame = CGRectMake(12.0f, 10.0f, 748.0f, 985.0f); 
    self.pageController.delegate = self; 
    self.pageController.dataSource = self; 
    [self.pageController setViewControllers:[NSArray arrayWithObject:[VControllers objectAtIndex:0] ] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) 
    { 
    }]; 
    [self addChildViewController:self.pageController]; 
    [self.view addSubview:self.pageController.view]; 
} 
return self; 
} 

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController 
       spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation 
{ 
if(UIInterfaceOrientationIsPortrait(orientation)) 
{ 
//Set the array with only 1 view controller 
    UIViewController *currentViewController = [self.pageController.viewControllers objectAtIndex:0]; 
    NSArray *viewControllers = [NSArray arrayWithObject:currentViewController]; 
    [self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL]; 

    //Important- Set the doubleSided property to NO. 
    self.pageController.doubleSided = NO; 
    //Return the spine location 
    return UIPageViewControllerSpineLocationMin; 

} 

else 
{ 
NSArray *viewControllers = nil; 

    exampleViewController *currentViewController = [self.pageController.viewControllers objectAtIndex:0]; 

    NSUInteger currentIndex = [self.VControllers indexOfObject:currentViewController]; 

    if(currentIndex == 0 || currentIndex %2 == 0) 
    { 
     UIViewController *nextViewController = [self pageViewController:self.pageController viewControllerAfterViewController:currentViewController]; 
     viewControllers = [NSArray arrayWithObjects:currentViewController, nextViewController, nil]; 
    } 
    else 
    { 
     UIViewController *previousViewController = [self pageViewController:self.pageController viewControllerBeforeViewController:currentViewController]; 
     viewControllers = [NSArray arrayWithObjects:previousViewController, currentViewController, nil]; 
    } 
    //Now, set the viewControllers property of UIPageViewController 
    [self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL]; 

    return UIPageViewControllerSpineLocationMid; 
} 
} 


- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
int index = [self.VControllers indexOfObject:viewController]; 

//[self checkViewControllers]; 
if (index - 1 >= 0) 
{ 
    ind = index; 
    return [self.VControllers objectAtIndex:index - 1]; 
} 
ind = index; 
return nil; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
int index = [self.VControllers indexOfObject:viewController]; 
//[self checkViewControllers]; 
if (index + 1 < [self.VControllers count]) 
{ 
    ind = index; 
    return [self.VControllers objectAtIndex:index + 1]; 
} 
ind = index; 

return nil; 
} 

我需要的是展示表演雙視圖一對夫婦的時間後,單一視圖控制器。此功能我無法激活。任何人都可以爲此指導。

在此先感謝。

+0

而......你的問題是......? – ATaylor

+0

我想在不改變方向的情況下多次顯示雙視圖後顯示單個視圖控制器。 –

+0

那麼,'pushViewController'或'addSubview'有問題嗎?方向不會自然改變,除非您親自改變它,據我所知。 – ATaylor

回答

0

您不能將顯示兩頁的內容更改爲僅顯示一頁而不更改方向。

你可以做的是創建自己的容器並自己處理轉換。雖然我無法提供任何自己的示例代碼,但比看起來更容易。

但是我可以告訴一些教程我能找到一些谷歌上搜索:

如果你想有翻頁效果,你可以看看here

有了這個,您就可以自由地顯示您想要的視圖控制器數量,並隨時更改該數字。當你這樣做的時候你甚至可以製作動畫。

相關問題