2012-08-28 77 views
0

我一直努力讓一個UIPageViewController到了相當一段時間的工作,而缺乏的結果是開始我發瘋...不能得到UIPageViewController工作

下面的代碼部分的教程(其中我也沒有去工作)並且離我而去。現在我試圖讓每個viewControllers查看一個標籤,以便在添加內容之前確保它可以正常工作。

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

vcArray = [self createViewControllers:1]; 
NSLog(@"TEST1"); 


self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; 
self.pageController.delegate = self; 
self.pageController.dataSource = self; 
NSLog(@"TEST2 %@", vcArray); 
[self.pageController setViewControllers:vcArray direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil]; 
[[pageController view] setFrame:[[self view] bounds]]; 
NSLog(@"TEST3"); 
[self addChildViewController:self.pageController]; 
[[self view] addSubview:[self.pageController view]]; 
[pageController didMoveToParentViewController:self]; 
NSLog(@"TEST4"); 

} 

- (NSArray *) createViewControllers:(NSInteger)ammount{ 
NSMutableArray *array = [NSMutableArray new]; 
for (NSInteger i = 0; i <= ammount; i++) { 
    PageContentViewController *pageContentViewController = [PageContentViewController new]; 
    UILabel *label = [UILabel new]; 
    label.text = @"STRING"; 
    pageContentViewController.view = label; 
    [array addObject:pageContentViewController]; 
} 
return array; 
} 

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

index--; 
return [vcArray objectAtIndex:index]; 
} 

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

index++; 
if (index == [vcArray count]) { 
    return nil; 
} 
return [vcArray objectAtIndex:index]; 
} 

- (NSUInteger)indexOfViewController:(PageContentViewController *)viewController 
{ 
return [vcArray indexOfObject:viewController.dataObject]; 
} 

你能看到我失蹤了嗎? 我已經經歷了太多的教程和計算器問題,這給我留下了只有更糊塗了......

由於提前, 湯姆

回答

1

一般提示:

不要使用[PageContentViewController new],使用[[PageContentViewController alloc] initWithNibName:nil bundle:nil]。請勿使用[UILabel new],請使用[[UILabel alloc] initWithFrame:CGZeroRect]

逐步通過您的代碼。檢查應該是nil的對象。 Objective-C將默默地允許事情成爲nil,即使你調用它們的方法!

+0

所以代碼看起來一般?我做你所說的話並回報! – Tom

+0

它大多看起來不錯。你正在做其他方法調用應該爲你做的很多事情(例如,只需要TEST3和TEST4之間的中間線)。 'setViewControllers:...'不會設置所有應該可以瀏覽的視圖控制器,只是可見的視圖控制器。您最終需要提供數據源,並且由於您已將'self'設置爲您的數據源,因此您應該從數據源方法返回敏感值。 – Jesper

+0

我似乎還需要了解一些東西。我不知道數據源是什麼......立即查找它!如果你能用幾句話給出一個簡短的解釋,那將非常棒!你可以看到可瀏覽的瀏覽器是什麼意思?他們是否有看法? – Tom