質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.81%

textFieldの文字とSegmented controlが選んだ項目を別のviewControlerのタイトルやラベルに表示する方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 424

Tomzy

score 96

質問の概要

複数のtextFieldとSegmented controlを設定して、インプット文字と選ばれた項目を別のviewControlerのナビゲーションバーのタイトルやラベルに表示させるアプリを制作しています。

最初データーベースのRealmを使ったため、思わぬ表示エラーがでましたのでRealmを止めてSingletonを使用した共通データの受け渡し方法を使い作りなおしています。しかし、エラーがでて行き詰まっています。ご教示ください。

現れた現象

タイトルやラベルの表示そのものが出ず、3箇所同じようなエラーがでて先に進まないでいます。

エラーのでるところは下記のコードに記載しました。エラーは > Use of unresolved identifier 'JikokuDataJikokuShuruiSeg'
です。

参考にしたサイト情報

【Swift4】シングルトン(Singleton)を使用した共通データの受け渡し
リンク内容

textFieldとsegmented controlを設定した画面のTorikomiSetteiViewController.swiftのコードは下記のとおりです。

import UIKit
import AVFoundation
import WebKit

//シングルトン定義
class SharedData {
private static let sharedDataSingleton = SharedData()
var id = 0
var jikokuShuruiSeg = 0
var youbiSeg = 0
var oufukuSeg = 0
var textEkimei = ""
var textHoumen = ""
var textURL = ""
var jikokuHyouImage: Data?
var category = 0

class func sharedObject() -> SharedData{
return SharedData.sharedDataSingleton
    }
enum JikokuDataJikokuShuruiSeg: Int {
case realBus
case busTime
case railTime
case otherTime
    }

enum JikokuDataYoubiSeg: Int {
case sunday
case saturday
case sunSatday
case monFriday
    }

enum JikokuDataOufukuSeg: Int {
case outward
case fukuro
case other
    }    
}

class TorikomiSetteiViewController: UIViewController, UITextFieldDelegate, WKUIDelegate, WKNavigationDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, GADBannerViewDelegate {

@IBOutlet weak var jikokuShuruiSeg: UISegmentedControl!
@IBOutlet weak var youbiSeg: UISegmentedControl!
@IBOutlet weak var oufukuSeg: UISegmentedControl!

@IBOutlet weak var textEkimei: UITextField!

@IBOutlet weak var textHoumen: UITextField!

@IBOutlet weak var torikomiID: UILabel!

@IBOutlet weak var buttonJikokuKeyboard: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

textEkimei.delegate = self as UITextFieldDelegate

//ウエブサイトGoogleのボタンが押されたときのデータの隣への移送と画面遷移
@IBAction func webSiteGoogle(_ sender: Any) {
print("ここまできたwebSiteGoogleボタンが押された")

//呼び出すとき
let sharedData = SharedData.sharedObject()

//segmented controlの選択数値を取得    
sharedData.jikokuShuruiSeg = jikokuShuruiSeg.selectedSegmentIndex
sharedData.youbiSeg = youbiSeg.selectedSegmentIndex
sharedData.oufukuSeg = oufukuSeg.selectedSegmentIndex

//テキストフィールドの名前を取得
sharedData.textEkimei = self.textEkimei.text!
sharedData.textHoumen = self.textHoumen.text!
print("ここまで来たデータの読み込み", sharedData)

let webSiteGoogle = storyboard?.instantiateViewController(withIdentifier: "webSiteGoogle") as! TorikomiWebViewController

//Navigation Controllerを使ってコードで遷移するコード
navigationController?.pushViewController(webSiteGoogle, animated: true)
print("ここまできたwebSiteGoogle画面への遷移")
   }

上記のGoogleボタンにより遷移する画面(segmented controlの選択結果を表示する画面TorikomiWebViewController.swift)のコードは下記のとおりです。

import Foundation
import AVFoundation
import UIKit
import WebKit

var label: UILabel!
class TorikomiWebViewController: UIViewController, WKUIDelegate, UINavigationControllerDelegate, WKNavigationDelegate, GADBannerViewDelegate {

@IBOutlet weak var jikokuShuruiSeg: UISegmentedControl!
@IBOutlet weak var youbiSeg: UISegmentedControl!
@IBOutlet weak var oufukuSeg: UISegmentedControl!
@IBOutlet weak var navBar: UINavigationBar!
@IBOutlet weak var webEkimei: UILabel!
@IBOutlet weak var webHoumen: UILabel!
@IBOutlet weak var webYoubi: UILabel!
@IBOutlet weak var webOuFuku: UILabel!

var webView: WKWebView!
let firstViewUrl = "https://google.com"

override func viewDidLoad() {
    super.viewDidLoad()

print("ここまで来たうウェブ画面での保存データ", sharedData)

//時刻表取得方法のsegmented controlによりナビゲーションバーのタイトルを表示

switch JikokuDataJikokuShuruiSeg(rawValue: sharedData.jikokuShuruiSeg)! {  //ここにエラーUse of unresolved identifier 'JikokuDataJikokuShuruiSeg'

case .realBus:
self.title = "リアルタイムバス時刻表"

case .busTime:
self.title = "バスストップ時刻表"

case .railTime:
self.title = "鉄道時刻表"

case .otherTime:
self.title = "その他時刻表"
        }

//Labelに駅名を表示
webEkimei.text = sharedData.textEkimei
//Labelに方面を表示
webHoumen.text = sharedData.textHoumen

//ラベルに曜日を記載      
switch JikokuDataYoubiSeg(rawValue: sharedData.youbiSeg)! {//ここにエラーUse of unresolved identifier 'JikokuDataYoubiSeg'

case .sunday:
webYoubi.text = "日曜日"

case .saturday:
webYoubi.text = "土曜日"

case .sunSatday:
webYoubi.text = "日・土曜"

case .monFriday:
webYoubi.text = "月ー金曜"

        }

//ラベルに往路・復路を記載
switch JikokuDataOufukuSeg(rawValue: sharedData.oufukuSeg)! {//ここにエラーUse of unresolved identifier 'JikokuDataOufukuSeg'

case .outward:
webOuFuku.text = "往路"

case .fukuro:
webOuFuku.text = "復路"

case .other:
webOuFuku.text = "その他"
        }

狙っている設定画面のスクリーンショット(現在はエラーデビルドできません)

イメージ説明

上記Googleボタンで遷移した画面のタイトルとラベルが表示されているスクリーンショット但し、現在はエラーでビルドできません。

イメージ説明

ご参考事項

AAA
環境は下記のとおりです。
MacBook Pro (15-inch, 2016)
Mojave OS10.14.4
Xcode Version 10.2.1 (10E1001)
Swift4

BBB
この問題箇所は時刻表を取得する画面で、時刻表の種類、
曜日、往復路の区別をsegmented controlで指定し、
駅名と方面をテキストでインプットして、Google検索、ヤッフー検索、
カメラ、画像選択のボタンでそれぞれの画面に遷移するものです。
また、Google検索画面に遷移すると、それぞれ選択したものと
インプットしたものが表示される画面が現れます。
ヤッフー検索、カメラ、画像選択の画面でも同様な表示を
使います。

CCC
本件が成功した場合、次のステップではGoogle検索結果のURLと上記選択項目とインプット項目も
合わせたデーターを取り込む予定をしています。

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • fuzzball

    2019/05/17 11:28

    出来ればこの質問から実践して欲しいのですが。
    あとから見る人のことはどうでもいいですか?

    キャンセル

  • Tomzy

    2019/05/17 11:52

    「これから」と書いたのはこの質問を修正する意味でした。表現がまずくて誤解を与えました。ごめんなさい。先ほど実施しました。

    キャンセル

  • fuzzball

    2019/05/17 11:59

    修正ありがとうございます。こちらこそ早とちりで失礼しました。

    キャンセル

回答 1

checkベストアンサー

0

SharedDataの中で定義しているのでSharedData.JikokuDataJikokuShuruiSegではないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/17 11:11

    修正しましたらエラーが消えてビルド結果も狙ったとおりsegmented controlの選択どおり表示されました。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.81%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • Swiftに関する質問
  • textFieldの文字とSegmented controlが選んだ項目を別のviewControlerのタイトルやラベルに表示する方法