2

UIPageViewController初めて使います。もちろん、それは iOS5 であり、私は ARC に慣れています。ストーリーボードは使用していません

私が見るすべての断片的な例では、UIPageViewControllerが画面を「所有」することはありません。それは常に他のView Controllerの子です。これは要件ですか?で一般的に行われているように、アプリのルートコントローラーにしたいと思い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];
}

また、2 つのデータ ソース コールバック メソッドにログを記録しましたが、呼び出されることさえありません。

これを実行すると、空白の赤い画面が表示されます。繰り返しますが、ストーリーボードは関係ありません。私は何が欠けていますか?

4

1 に答える 1

5

UIPageViewControllerサンプル プロジェクトでルート ビュー コントローラーとして使用できるのは、次の場合です。

  • UIPageViewController、有効なスパイン位置で正しく初期化されています。
  • のプロパティが設定されます (スパインUIPageViewControllerdoubleSided位置と一致します)。
  • の配列が設定されUIPageViewControllerますviewControllers(ここでも、スパインの位置とdoubleSidedプロパティと一致します)。

コードに を設定doubleSidedしていないようです(配列に 2 つの項目があるため)。配列を設定する前にそれを追加すると問題が解決しますか?YESviewControllersviewControllers

編集:後世のために、UIPageViewController ドキュメントのメソッドの説明に、setViewControllers:direction:animation:completion:スパインの位置とdoubleSided.

于 2012-01-14T03:38:33.300 に答える