質問はUIViewControllerをUITableViewControllerに変更する方法に関するものであり、この質問は1年以上前のものであり、元の回答であり、有効であり、唯一の解決策である場合とそうでない場合があるため、これに追加します。時間は、実際には質問に答えず、唯一の解決策ではありません。
これを行うことは可能です。IBでテーブルビューデリゲートとデータソースアウトレットを設定し、ストーリーボードXMLを手動で編集するだけです。これは恐ろしいように聞こえますが、実際には非常に簡単です。
まず、クラスの親をUITableViewControllerに変更します。UITableViewControllerはすでにUITableViewDatasourceプロトコルとUITableViewDelegateプロトコルを採用しているため、クラスも採用している場合は、それらを削除できます。
@implementation MyTableViewController : UITableViewController
...
@end
次に、UITableViewにdataSourceとデリゲートの新しい参照アウトレットを作成します。これを行う最も簡単な方法は、UITableViewからそれ自体にcontrol-dragすることです。ポップアップには、dataSourceおよびdelegateオプションが表示されます。
最後に、ストーリーボードのXMLを変更する必要があります。ストーリーボードファイルはかなり速く大きくなる可能性があります。探しているシーンを見つける最も簡単な方法は、IDインスペクターでストーリーボード識別子を設定することです。XMLを直接表示するには、プロジェクトナビゲータでストーリーボードファイルを右クリックし、[名前を付けて開く]->[ソースコード]を選択します。ここで、以前に再利用識別子を設定したものを検索します。次のようなものが表示されます。
<!-- My Table View Controller -->
<scene sceneID="EuE-XX-cCb">
<objects>
<viewController storyboardIdentifier="MY_TABLE_VIEW_IDENTIFIER" ... >
// Lots of other stuff
</viewController>
</objects>
</scene>
ビューコントローラの開始タグと終了タグを変更するだけです。
<viewController>
</viewController>
代わりにtableViewControllerになります
<tableViewController>
</tableViewController>
それでおしまい!新しいUITableViewControllerシーンを作成したり、コンテナビューにUITableViewControllerを埋め込んだりする必要はありません。
編集:
また、UITableViewはルートビューでなければならないことも追加する必要があります。別のUIView内に埋め込むことはできません。