UipageViewController как корневой контроллер приложения
-
27-10-2019 - |
Вопрос
я использую 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
инициализируется должным образом с действительным местоположением позвоночника. - А
UIPageViewController
S.doubleSided
Свойство установлено (в соответствии с местоположением позвоночника). - А
UIPageViewController
S.viewControllers
Массив установлен (опять же, в соответствии с расположением позвоночника иdoubleSided
имущество).
Похоже, ты не установил doubleSided
к YES
в вашем коде (так как ваш viewControllers
В массиве есть два пункта в нем). Добавляется ли это, прежде чем установить viewControllers
Массив исправить свою проблему?
РЕДАКТИРОВАТЬ: Просто для потомства, в UIPAGEVIEWCONTROLLER DOCS есть диаграмма в описании setViewControllers:direction:animation:completion:
Метод, показывающий количество контроллеров представления, разрешенных для всех действительных комбинаций местоположения позвоночника и doubleSided
.