0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#13 アンケートアプリ

Posted at

この記事では、私が開発したアプリケーション「StressScanApp」を紹介します。これは、ユーザーが仕事のストレスを識別し、管理するのを助けるツールです。このアプリケーションは、ユーザーエクスペリエンスとデータ処理の効率を向上させるために、さまざまな技術を使用しています。これには、データ伝達のためのsegue技術の使用、コードを整理して機能関数を他のファイルに抽出すること、そしてunwind技術を使用してメインページに戻ることが含まれます。さらに、異なるユーザーのニーズに応えるために、日本語と台湾中国語の二つの言語バージョンを設計しました。

JP.gif

TW.gif

Segueを使用したデータ伝達

StressScanAppでは、segue技術を使用して異なるビューコントローラー間でデータを伝達します。ユーザーがアンケートを完了すると、アプリはsegueを使用して得点をSurveyViewControllerからresultViewControllerに伝達します。
以下のコードは、アンケートを完了した後、ユーザーのスコアに基づいて結果ページにナビゲートし、ユーザーの得点と言語設定を結果ページに伝達する方法を示しています。

@IBSegueAction func resultSegue(_ coder: NSCoder) -> resultViewController? {
    let controller = resultViewController(coder: coder)
    controller?.result = score
    controller?.language = language
    return controller
}

機能関数の抽出

コードを整理するため、すべてのUI要素を更新する機能関数は別のファイルfunction.swiftに配置しました。これには、問題テキストの更新、回答ボタンの更新、スコアに基づく結果の表示が含まれます。以下の関数は、現在選択されている言語と問題番号に基づいて、問題ラベルの内容とアラインメントを更新します。

func updateQuestion(language: String, count: Int, questionLabel: UILabel!, question: [Question]) {
    if count < 5 {
        switch language {
        case "JP":
            questionLabel.text = question[count].JP
            questionLabel.textAlignment = .left
        case "TW":
            questionLabel.text = question[count].TW
            questionLabel.textAlignment = .center
        default:
            questionLabel.text = question[count].JP
        }
    }
}

Unwind技術を利用してホームページに戻る

unwind segueは、iOS開発でビューコントローラーのナビゲーションを管理する別の方法です。
この方法では、ユーザーがアンケートを完了して結果を確認した後、アプリのメインページに直接戻ることができます。

@IBAction func unwindToRootViewController(segue: UIStoryboardSegue) {
}

多言語デザイン

異なる地域のユーザーのニーズに対応するために、このアプリは日本語と台湾中国語の二つの言語をサポートしています。ユーザーはメインページで言語を選択でき、その後のすべての質問と回答は選択された言語で表示されます。
このコードは、言語選択のアクションを処理し、ユーザーの選択が正しく記録され、後続のアンケートページに適用されることを保証します。

@IBAction func languageChosen(_ sender: UIButton) {
    switch sender.titleLabel?.text {
    case "日本語" :
        language = "JP"
    case "中国語" :
        language = "TW"
    default :
        language = "JP"
    }
    
    performSegue(withIdentifier: "languageChosenSegue", sender: nil)
}

総括

:one:データ伝達とインターフェースナビゲーション

segue技術を実装することで、iOS内のインターフェース間でのデータ伝達メカニズムを深く理解しました。特に、performSegueやprepare(for:sender:)メソッドを使用してデータを伝達することで、データフローとインターフェースの挙動をより柔軟に制御し、アプリの全体的なユーザーエクスペリエンスを向上させることができました。

:two:コードの整理とモジュール化

機能関数を独立したファイル(function.swiftなど)に分離することで、コードをより良く組織し、可読性とメンテナンス性を向上させる方法を学びました。このモジュール化のアプローチは、コードベースをより整理されたものにし、将来の拡張と管理を容易にします。

:three:多言語サポートの実装

多言語サポートを実装する過程で、異なる言語環境をサポートするための柔軟な言語切り替えメカニズムの設計方法を学びました。これはアプリの国際化能力を強化するだけでなく、対象ユーザーの範囲も広がりました。

:four:Unwind Segueを使用したビューコントローラーの管理

unwind segueを実装することで、複雑なナビゲーション構造内でビューコントローラーの戻り動作を管理する方法を習得しました。これにより、アプリのナビゲーションプロセスをより良く制御し、ユーザーが異なるインターフェース間をスムーズに移動できるようにしました。

全体として、このプロジェクトは私の技術的スキルを向上させるだけでなく、問題解決能力と革新的な思考も豊かにしました。これらの学びは、私の将来のプロジェクトや職業發展に深い影響を与えるでしょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?