それで、たくさん遊んだ後、私はそれを機能させることができました。この時点では遷移はありませんが、他の人が見ることができるようにコードを投稿したいと思いました。
ストーリーボードには、ゲーム全体のビューコントローラがあり、ビューコンテナとボタンがあります。ゲームビューに埋め込まれているビューは、さまざまなタイプの質問を含むページコントローラーです。次に、ストーリーボードに添付されていないのは、さまざまなタイプの質問レイアウトです。私の場合は、teamDisplayとlocationDisplayです。
QuestionViewControllerで、.hファイルに2つのプロパティを追加しました。
@property (nonatomic, strong) UIPageViewController *pageViewController;
@property (nonatomic, strong) NSMutableArray *questionTypeViewControllers;
メソッドを宣言しました:
-(void)changeView;
.mファイルで、それらを合成しました。
@synthesize questionTypeViewControllers,
pageViewController;
viewDidLoadメソッドの場合:
pageViewController = [[UIPageViewController alloc]
initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
UIViewController *ldvc = [self.storyboard instantiateViewControllerWithIdentifier:@"locationDisplay"];
UIViewController *tdvc = [self.storyboard instantiateViewControllerWithIdentifier:@"teamDisplay"];
questionTypeViewControllers = [NSMutableArray arrayWithObjects:ldvc, tdvc, nil];
NSArray *initView = [NSArray arrayWithObject:ldvc];
[pageViewController setViewControllers:initView
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
[self addChildViewController:pageViewController];
[self.view addSubview:self.pageViewController.view];
次に、changeViewメソッドを実装しました。
NSArray *initView = [NSArray arrayWithObject: [questionTypeViewControllers objectAtIndex:1]];
[pageViewController setViewControllers:initView
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
ボタンが配置されているGameViewControllerで、ボタンにアクションを追加し、QuestionViewControllerから新しく作成されたchangeViewメソッドを呼び出します。
- (IBAction)change:(id)sender {
// Need a more reliable way to get the QuestionViewController.
[[self.childViewControllers objectAtIndex:0] changeView];
}
そしてそれだけです。簡単なことではありませんか?!;)
これがこれを行うための適切な方法であるかどうかはわかりませんが、機能しました。提案や改善は大歓迎です。