ページベースのアプリケーションを作成し、いくつかの実験のために少しハッキングしました。私の単純な目的は、UITableView を保持する UIViewController がページに含まれる UIPageViewController を作成することです (さらに調査した結果、代わりに UITableViewController を使用した場合、実験の結果は同じになります)。これを行うには、プロジェクト テンプレートを編集し、このスクリーンショットでわかるように、Storyboard の ContainerView オブジェクトを使用して、UIPageViewController を RootViewController の埋め込みビューとして追加しました。
すべてのコントローラーは、スクロール ビューのコンテンツ インセットを自動的に調整するようにストーリーボードを介して構成されます。この構成でプロジェクトを開始すると、すべて問題なく表示され、DataViewController のテーブルビューのコンテンツ インセットがナビゲーション バーのすぐ下で期待どおりに適切に調整されます。ただし、ユーザーがテーブルビューを操作すると、コンテンツ インセットが壊れ、テーブルビューがナビゲーション バーの下に重なって表示されます。
DataViewController の viewDidLayoutSubview メソッドでコンテンツ インセットを手動で設定し、任意のコントローラーで Adjusts Scroll View Insets を無効にすることでこれを修正できたので、問題を解決するための答えとしてこれは必要ありません。私の質問は、最初のコントローラーが初めてストーリーボードからロードされた直後にコンテンツのインセットが適切に設定される理由と、何らかのユーザー操作の後にそれらが壊れる理由です。
直接テストする必要がある場合は、プロジェクトへのリンクがあります