アプリケーションの一部のビューにカスタムヘッダーとして追加しようとしているボタンが3つあります。それらをストーリーボードに追加すると問題なく機能し、ViewControllerのメソッドに接続できます。
最近、これらのボタンを他のページに追加して、別のページで再利用できるコントロールに抽象化したいと思いました。セットアップはしましたが、通常の方法で追加できません。
通常、ビューコントローラーを子ビューコントローラーとして追加してから、ビューをサブビューとして追加します。この場合、ストーリーボードにあるプレースホルダーにビューを追加します。コードは次のようになります。
// Setup Header
HeaderViewController * headerViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"HeaderViewController"];
[headerViewController.view setFrame:CGRectMake(0.0f, 0.0f, [headerViewController.view frame].size.width, [headerViewController.view frame].size.width)];
[_headerView addSubview:headerViewController.view];
これにより、ビューを正しく表示できますが、ボタンをクリックすると、ボタンのクリックに関連付けられたIBActionsを持つView Controllerが見つからないため、クラッシュします。通常、私は次のコードを追加し、それが処理されます。
[self addChildViewController:headerViewController];
ただし、この場合、次のようなエラーが発生します。
キャッチされない例外のためにアプリを終了します'UIViewControllerHierarchyInconsistency'、理由:'子ビューコントローラー:親ビューコントローラーが必要です:しかし実際の親は:'
これは、カスタムヘッダービューコントローラーの親がナビゲーションコントローラーである必要があると考えていることを意味すると理解しています。ナビゲーションコントローラーの子として設定することもできません。表示されているPageViewControllersビューの上にヘッダービューを追加します。私はおそらく単純なものが欠けています
私が試した組み合わせのいくつかはシミュレーターで機能しますが、どれもデバイスでは機能しません。したがって、同様の構成で遊んでいる場合は、シミュレーターで機能しているように見える場合は、デバイスでそれを確認してください。
何か考えや他の情報を提供して役立つ情報はありますか?