Вопрос

я использую UIPageViewController в первый раз. Это, конечно, iOS5, и мне комфортно с дугой. Я нет Используя раскадровки.

Во всех частях, которые я вижу, UIPageViewController Никогда «не владеет» экраном. Это всегда ребенок другого контроллера представления. Это требование? Я хочу сделать это корневым контроллером моего приложения, как обычно делается с UINavigationController. Анкет Я пытаюсь настроить все это программно, но все, что я получаю, - это пустой контроллер представления страницы, без содержания в нем.

Вот как начинается приложение (весь код здесь находится в моем классе Delegate My App):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [self configureLoggers];
    [self applyAppearanceProxySettings];
    [self configureDataStore];
    [self configureNavigationController];
    [self configurePageController];    // <-- this is where we do the page view controller setup, shown next.

    self.window.rootViewController = self.pageController;
    [self.window makeKeyAndVisible];

    log4Info(@"Application completed launching.");

    return YES;
}

И этот метод упомянул в приведенном выше коде, который выполняет настройку для контроллера представления страницы:

- (void)configurePageController {
    CCFrontCoverViewController *frontCoverViewController = [[CCFrontCoverViewController alloc] initWithNibName:nil bundle:nil];

    NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:UIPageViewControllerSpineLocationMin]
                                                    forKey:UIPageViewControllerOptionSpineLocationKey];

    self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
                                                      navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                    options:options];

    self.pageController.delegate = self;
    self.pageController.dataSource = self;
    self.pageController.view.backgroundColor = [UIColor redColor]; // So we know we're missing content because red shows through.

    NSArray *pageViewControllers = [NSArray arrayWithObjects:frontCoverViewController, self.navigationController, nil];
    [self.pageController setViewControllers:pageViewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}

Я также поместил ведение журнала в двух методах обратного вызова источника данных, и они даже не вызываются.

Когда это запускается, я просто получаю пустой красный экран. Опять же, нет никаких рассказов. Что мне не хватает?

Это было полезно?

Решение

Я могу использовать UIPageViewController В качестве контроллера корневого представления в образце проекта предусмотрено, что:

  • А UIPageViewController инициализируется должным образом с действительным местоположением позвоночника.
  • А UIPageViewControllerS. doubleSided Свойство установлено (в соответствии с местоположением позвоночника).
  • А UIPageViewControllerS. viewControllers Массив установлен (опять же, в соответствии с расположением позвоночника и doubleSided имущество).

Похоже, ты не установил doubleSided к YES в вашем коде (так как ваш viewControllers В массиве есть два пункта в нем). Добавляется ли это, прежде чем установить viewControllers Массив исправить свою проблему?

РЕДАКТИРОВАТЬ: Просто для потомства, в UIPAGEVIEWCONTROLLER DOCS есть диаграмма в описании setViewControllers:direction:animation:completion: Метод, показывающий количество контроллеров представления, разрешенных для всех действительных комбинаций местоположения позвоночника и doubleSided.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top