質問の概要
複数の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と上記選択項目とインプット項目も
合わせたデーターを取り込む予定をしています。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー