iphone - 无法让 UIPageViewController 工作

标签 iphone objective-c ios

我一直在努力让 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];
}

你能看到我错过了什么吗? 我已经浏览了太多的教程和 stackoverflow 问题,这让我更加困惑......

提前致谢, 汤姆

最佳答案

一般提示:

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

逐步执行您的代码。检查应该是nil的对象的东西。 Objective-C 会默默地允许事物nil,即使你调用它们的方法!

关于iphone - 无法让 UIPageViewController 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161229/

相关文章:

iphone - 确定 iOS 设备上可能的最大同时触摸数?

objective-c - 类型在 Swift Objective-C header 中被注释掉了吗?

iphone - Storyboard和 View 转换

objective-c - 核心图1.0 : Provide Custom Labels for Legends

ios - 同时关闭多个 View Controller

iphone - Xcode "Use of undeclared identifier"

ios - bundle ID 是否必须使用反向域表示法?

ios - 为什么我以编程方式创建的 View 会忽略其约束?

ios - 如何在没有导航栏显示在其他 View Controller 上的情况下使用 UITableViewController 进行搜索?

iphone - iOS、iPhone - 弹出图像查看器