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;
}
我需要的是展示表演雙視圖一對夫婦的時間後,單一視圖控制器。此功能我無法激活。任何人都可以爲此指導。
在此先感謝。
而......你的問題是......? – ATaylor
我想在不改變方向的情況下多次顯示雙視圖後顯示單個視圖控制器。 –
那麼,'pushViewController'或'addSubview'有問題嗎?方向不會自然改變,除非您親自改變它,據我所知。 – ATaylor