

参考書ではContentViewを使っていますが、ぐぐるとViewControllerの記事ばかりでてきます。  
これらの違いはなんでしょうか？


CC BY-SA 4.0
2021-01-10T06:06:39.987
73185
2021-01-10T07:22:30.430
43477
question
swift
ViewControllerとContentViewの違いはなんですか？


少々質問内容が漠然としすぎのような気もしたのですが、回答が爆発的に広範囲になると言うこともなさそうなので、回答してみようと思います。

現在iOS(あるいは、他のApple製プラットフォーム)上のアプリを作る場合、画面デザイン(あるいはUIデザイン)をするためには、大きく2つの方法があります。

* * *

**UIKit** (iOS以外では呼び方が違いますが、細かいことは省略)

storyboardまたはxibと言う拡張子がついたファイルをグラフィカルな編集が出来る専用のエディタ(Interface
Builderと呼ばれます)で作成・編集しながら画面デザインを行います。

こちらは前世紀から使われている古典的な方法で、同じく古典的な言語であるObjective-
CをSwiftの代わりに(またはSwiftと共に)使うこともできます。

iOSアプリの場合、`UIViewController`というクラスを継承した`ViewController`というクラスが標準テンプレート内に用意されるので、`ViewController`クラスに画面デザイン以外の動作・処理の部分を記述していくことになります。

アプリが少し大きくなって複数の画面が関わるようになると`ViewController`以外にもたくさんのクラスが必要になりますし、`ViewController`以外の名前にすることもできます。

* * *

**SwiftUI**

プログラミング言語Swiftのソースファイルである.swiftと言うファイルの中に(基本は)テキストとして画面の構成を宣言的に記述していくことで、画面デザインを行います。

こちらは2019年のWWDCで登場した新しい方法で、Swift言語専用です。「参考書ではContentViewを使っています」と言うことは、その参考書はSwiftUIについて書かれているのだと思われます。

XcodeでSwiftUIのプロジェクトを作成すると、`ContentView`と言う、`View`に適合した構造体が作成されるので、この`ContentView`を編集して、画面デザインと動作・処理の両方を記述していくことになります。

UIKitを使用した場合と同じく、`ContentView`以外の`View`もどんどん必要になりますし、これまた`ContentView`と言う名前である必要はありません。

* * *

細かいことを言うと、UIKitでもstoryboardを使わずswiftのコードだけで画面デザインを作ることもできますし、SwiftUIでもグラフィカルなエディターが用意されてたりしますが、概要を理解する場合にはあまり気にしなくて良いでしょう。

上記の説明に出てきた単語でわからないものもあるでしょうが、ご自身で少しずつ調べてみて下さい。

まとめると、

  * 「参考書ではContentViewを使っています」→その参考書はSwiftUIについて書かれている
  * 「ぐぐるとViewControllerの記事ばかりでてきます」→それらの記事はUIKitについて書かれている

と言えるでしょう。上記したようにUIKitの方が古くからあるので、どうしても普通に検索するとそちらの方が圧倒的に多く引っかかります。

  * 検索の際には「swiftui」と言う単語を検索に入れる
  * ここで質問する場合には「swiftui」と言うタグを使用する

と言ったことを覚えておいた方が良いでしょう。


CC BY-SA 4.0
2021-01-10T07:22:30.430
73190
2021-01-10T07:22:30.430
13972
73185
answer