この記事では、Webページを表示するアプリを作ります。
プロジェクトを立ち上げる。
- Xcodeを起動し、起動画面から"Create a new Xcode project"を選択。
- 次に、"Single View Application"を選択。
3. 次の画面ではプロジェクト名を入力。"Organization Identifier"では、ドメイン名を逆に記入するが、練習なので、com.exampleとする。
4. 保存する場所を選択する。
実行する
- プロジェクトが立ち当たったら、どの種類のデバイスでシュミレータを実行するかを選択します。デフォルトではiPhone XRになっているはず。IPad AirやiPhone 8などいろいろ選択することができます。
- 機種を選択したら、実行してみます。左上にある三角のボタン(▶︎)を押すことでコードを実行することができます。Cmd+Rでも同じようにできます。
- 白い画面が現れたら成功。
4. Cmd+.で実行をストップできる。
Webサイトを表示してみる。
今回は、Webページを画面に表示させてみます。
WebKitの導入
ViewController.swiftを開き、import UIKitの下にimport WebKitを追加する。
ViewController.swift
import WebKit
画面を作る
WKWebViewを生成。
ViewController.swift
var webView: WKWebView!
viewDidLoad()の前に以下のメソッドを追加
注:この段階ではまだ動かない。
ViewController.swift
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
- 厳密には
loadView()をviewDidLoad()の前に置く必要はない。ViewControllerクラスのどこにloadView()を置いてもいいが、loadView()がviewDidLoad()の前に呼ばれるため、実行される順番がわかりやすいように上のような記述にしている。 -
WKWebViewと呼ばれる部品のインスタントを作り、これをwebViewプロパティとひもづける。
デリゲートを実装する。
上記のエラーを解消する。
以下のコードを
ViewController.swift
class ViewController: UIViewController {
以下のように変更する。
ViewController.swift
class ViewController: UIViewController, WKNavigationDelegate {
-
class A: Bとすることで、AクラスはBの機能を実装できる。 -
class A: B, Cとなっている場合、AはBを継承していることを示し、Cがデリゲートされていることになる。 - 上記のコードでは、
ViewControllerがUIViewControllerの子クラスであり、WKNavigationDelegateをデリゲートすることになる。
表示するURLの設定
viewDidLoad()のsuper.viewDidLoad()の後に以下のコードを書く。
ViewController.swift
let url = URL(string: "https://www.apple.com/")! //任意のURL
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
- string型の
URL型に保存。 - URLから
URLRequestオブジェクトを生成する。 - urlの冒頭は
https://とすること。
実行
Cmd+Rで実行すると、シュミレータにWebページが表示される。

終わりに
まずはWebページを表示するシンプルなアプリを作ってみました。
これから色々なアプリを作って練習していこうと思います。