2012-08-28 76 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