Я использую UIPageViewController
в первый раз. Это, конечно, iOS5, и мне нравится ARC. Я не с использованием раскадровки.UIPageViewController как корневой контроллер приложения
Во всех разрозненных примерах, которые я вижу, UIPageViewController
никогда не «владеет» экраном. Он всегда является дочерним элементом какого-либо другого контроллера представлений. Это требование? Я хочу сделать его корневым контроллером моего приложения, как обычно это делается с помощью UINavigationController
. Я пытаюсь установить все это программно, но все, что я получаю, это пустой диспетчер просмотра страниц, без содержимого.
Вот как приложение начинается (весь код здесь, в моем приложении класса делегата):
- (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;
}
И этот метод упоминается в приведенном выше коде, что делает установку для Page View Controller:
- (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];
}
Я также записал логин в двух методах обратного вызова источника данных, и они даже не вызываются.
Когда это выполняется, я просто получаю пустой красный экран. Опять же, нет раскадровки. Что мне не хватает?
Получаете ли вы какие-либо ошибки вообще? Вы уверены, что self.navigationController не ноль? – dtuckernet
У меня есть утверждение, подтверждающее, что self.navigationController не равен нулю в точке, где я добавляю его в стек контроллеров контроллера просмотра. Единственная ошибка, которую я вижу, я видел, как люди отклонялись на форумах Apple dev как ошибка: «Контроллер представления возвратил NO из -shouldAutorotateToInterfaceOrientation: для всех ориентаций интерфейса. Он должен поддерживать по крайней мере одной ориентации ". –
idStar
См. [Это] (https://devforums.apple.com/message/563625#563625) обсуждение в форумах разработчиков Apple относительно этого сообщения об ошибке (я прочитал его как сообщение UIPageViewController будет возвращать «НЕТ» во все ориентации в любое время он не настроен должным образом ...). –