2015-01-05 22 views
1

不幸的是,搜索並沒有幫助我...我有以下問題:我有三個UItableviews(ViewController1,ViewController2和Viewcontroller3),我嵌入一個簡單的PageViewController Screenshot of storyboard(我可以'不要在這裏插入任何圖片:/)。UIPageviewcontroller:從中間開始

爲了顯示這三個ViewControllers,我把它們放到了我的PageViewController.m(PageViewController的自定義類)的viewdidload中的一個數組中,所以我沒有使用ViewController作爲容器來將其他ViewController放入:

-(void)viewDidLoad 
 
{ 
 
    [super viewDidLoad]; 
 
    
 
    self.delegate = self; 
 
    self.dataSource = self; 
 
    
 
    UIViewController *p1 = [self.storyboard 
 
          instantiateViewControllerWithIdentifier:@"TableView1"]; 
 
    UIViewController *p2 = [self.storyboard 
 
          instantiateViewControllerWithIdentifier:@"TableView2"]; 
 
    UIViewController *p3 = [self.storyboard 
 
          instantiateViewControllerWithIdentifier:@"TableView3"]; 
 
    
 
    myViewControllers = @[p1,p2,p3]; 
 
我可以挑選我的viewController開始,要麼

- 向前去(方向:UIPageViewControllerNavigation**DirectionForward**):

 [self setViewControllers:@[p1] 
 
         direction:UIPageViewControllerNavigationDirectionForward 
 
         animated:NO completion:nil]; 
 
     
 
     NSLog(@"loaded!"); 
 
    }

或挑最後就和倒着走UIPageViewControllerNavigation**DirectionReverse**):

 [self setViewControllers:@[p3] 
 
        direction:UIPageViewControllerNavigationDirectionReverse 
 
        animated:NO completion:nil]; 
 
    

不過,我一直在試圖找出如何開始ViewController2和哈弗e Viewcontroller1在其左側和ViewController3在右側(cp. Screenshot)

任何建議或代碼片斷將非常感激!

而這裏的全部代碼:

#import "StartScreenPageViewController.h" 
 

 
@interface StartScreenPageViewController() 
 

 
@end 
 

 
@implementation StartScreenPageViewController 
 
{ 
 
    NSArray *myViewControllers; 
 
} 
 

 
-(void)viewDidLoad 
 
{ 
 
    [super viewDidLoad]; 
 
    
 
    self.delegate = self; 
 
    self.dataSource = self; 
 
    
 
    UIViewController *p1 = [self.storyboard 
 
          instantiateViewControllerWithIdentifier:@"1"]; 
 
    UIViewController *p2 = [self.storyboard 
 
          instantiateViewControllerWithIdentifier:@"2"]; 
 
    UIViewController *p3 = [self.storyboard 
 
          instantiateViewControllerWithIdentifier:@"3"]; 
 
    
 
    myViewControllers = @[p1,p2,p3]; 
 
    
 
    [self setViewControllers:@[p1] 
 
        direction:UIPageViewControllerNavigationDirectionForward 
 
        animated:NO completion:nil]; 
 
    
 
    NSLog(@"loaded!"); 
 
} 
 

 
-(UIViewController *)viewControllerAtIndex:(NSUInteger)index 
 
{ 
 
    return myViewControllers[index]; 
 
} 
 

 
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
 
    viewControllerBeforeViewController:(UIViewController *)viewController 
 
{ 
 
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController]; 
 
    
 
    --currentIndex; 
 
    currentIndex = currentIndex % (myViewControllers.count); 
 
    return [myViewControllers objectAtIndex:currentIndex]; 
 
} 
 

 
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
 
     viewControllerAfterViewController:(UIViewController *)viewController 
 
{ 
 
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController]; 
 
    
 
    ++currentIndex; 
 
    currentIndex = currentIndex % (myViewControllers.count); 
 
    return [myViewControllers objectAtIndex:currentIndex]; 
 
} 
 

 
-(NSInteger)presentationCountForPageViewController: 
 
(UIPageViewController *)pageViewController 
 
{ 
 
    return myViewControllers.count; 
 
} 
 

 
-(NSInteger)presentationIndexForPageViewController: 
 
(UIPageViewController *)pageViewController 
 
{ 
 
    return 0; 
 
} 
 

 
@end

+0

不錯的代碼片段。 – Shahar

+0

發佈整個代碼是否更好?我是新手:/ – monkmonk

+0

抱歉,我無法幫助解決這個問題(稍後會更詳細地討論它),只是想對帶有片段和所有內容的出色格式化問題說得很好。從我投票! – Tander

回答

1

您應該能夠設置初始視圖控制器viewDidLoad。你已經在做了,但你將其設置爲第一視圖控制器:

[self setViewControllers:@[p1] 
        direction:UIPageViewControllerNavigationDirectionForward 
        animated:NO completion:nil]; 

我想你應該只能夠改變這:

[self setViewControllers:@[p2] 
        direction:UIPageViewControllerNavigationDirectionForward 
        animated:NO completion:nil]; 

然後,只需確保您的pageViewController:viewControllerAfterViewControllerpageViewController:viewControllerBeforeViewController方法根據您所需的功能處理上下數據源。

相關問題