プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

Swiftで画面によって処理を振り分ける。

この記事は2019年02月23日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. Swiftで画面によって処理を振り分ける
  3. おわりに

絶対に挫折しないiPhoneアプリ開発「超」入門 第7版 【Xcode 10 & iOS 12】 完全対応 (Informatics&IDEA)

絶対に挫折しないiPhoneアプリ開発「超」入門 第7版 【Xcode 10 & iOS 12】 完全対応 (Informatics&IDEA)

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
PWEditorで使用しているSwiftで画面によって処理を振り分ける方法についてです。

目次へ

2. Swiftで画面によって処理を振り分ける

Swiftで画面によって処理を振り分ける方法ですが、PWEditorでは次のような方法を取っています。

if (self as? <モジュール名>.<クラス名>) != nil) {
    // 対象<クラス>の場合

} else {
   // 対象<クラス>ではない場合
}

実装例

import UIKit

/**
 基底ViewControllerクラス
 */
class BaseViewController: UIViewController {

    /**
     画面が表示される時に呼び出されます。

     - Parameter animated: アニメーション指定
     */
    override func viewWillAppear(_ animated: Bool) {
        // スーパークラスのメソッドを呼び出します。
        super.viewWillAppear(animated)

        // viewWillAppearで行う共通処理を、画面により行う/行わない場合を振り分けます。
        // モジュール名は"PWEditor"としています。
        if ((self as? PWEditor.SampleAViewController) != nil) {
            // SampleAViewControllerの場合、共通処理を行いません。

        } else {
            // SampleBViewControllerの場合、共通処理を行います。

            // 以下、共通処理
        }
    }

SampleAViewController.swift

import UIKit

/**
 各画面のViewControllerクラス
 BaseViewControllerを継承します。
 */
class SampleAViewController: BaseViewController {
    ...
}

SampleBViewController.swift

import UIKit

/**
 各画面のViewControllerクラス
 BaseViewControllerを継承します。
 */
class SampleBViewController: BaseViewController {
    ...
}

目次へ

3. おわりに

PWEditorでは、ViewControllerで共通の処理を基底クラスのBaseViewControllerに記述しています。
そして各ViewControllerはこのBaseViewControllerを継承するようにしています。
(extensionを使えばもっとスマートに実装できるかもしれませんが、当時はextensionを知らなかったためこのような実装になっています)

PWEditorでメニュー画面だけviewWillApperの共通処理を行なわないようにしたくて、このような実装にしました。

Tech Boost

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ