5

そのため、ibooks のようなリーダーを作成しようとしています。Web サービスからデータを取得した後、UIPageViewController の内容を動的に更新する必要があります。長い一連の理由により、最初にインスタンス化し、データが来たら更新する必要があります。

私は次のように作成しています:

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

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

self.pageController.dataSource = self;
self.pageController.delegate = self;

[[self.pageController view] setFrame:[[self view] bounds]];

MovellaContentViewController *initialViewController = [self viewControllerAtIndex:0];

self.controllers = [NSArray arrayWithObject:initialViewController];

[self.pageController setViewControllers:self.controllers
                              direction:UIPageViewControllerNavigationDirectionForward
                               animated:NO
                             completion:nil];

[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];

そして、私はただ設定しましたself.controllers = newControllersArray;

UITableViewController の reloadData のようなものを探していますが、UIPageViewController にそのようなものはありますか?

4

2 に答える 2

11

setViewControllers:direction:animated:completion: を pageController に再度送信し、表示する最初のビュー コントローラーを指定する必要があります。

[self.pageController setViewControllers:[NSArray arrayWithObject:
                                            [self viewControllerAtIndex:0]
                                        ]
                              direction:UIPageViewControllerNavigationDirectionForward
                               animated:NO
                             completion:nil];

viewControllerAtIndex:最初に想定したようにアクセスしない場合はself.controllers、むしろアクセスする必要があります

[self.pageController setViewControllers:[NSArray arrayWithObject:
                                            [self.controllers objectAtIndex:0]
                                        ]
                              direction:UIPageViewControllerNavigationDirectionForward
                               animated:NO
                             completion:nil];

代わりは

于 2012-08-09T14:43:14.967 に答える
1

主な問題は、Webビューがすべてのユーザータッチをインターセプトしていたため、UiPageViewControllerがデリゲートメソッドを呼び出していなかったことです。ユーザーのタッチイベントを無視するようにWebビューを設定すると、すべてが正しく機能し始めました。

于 2012-08-22T21:59:00.107 に答える