###前提・実現したいこと
プログラミング初心者です。
以下のサイトを参考に、Xcodeを使用したiOSのアプリ開発で
PickerViewを使用した画面を作成したいと考えています。
参考にしているサイト↓
http://joyplot.com/documents/2017/03/21/swift-uipickerview/
###発生している問題・エラーメッセージ
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MapFinal.webViewPageViewController 0x7fc1b0e1bd80> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key picker.'
*** First throw call stack:
(
0 CoreFoundation 0x0000000110743b0b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00000001101a8141 objc_exception_throw + 48
2 CoreFoundation 0x0000000110743a59 -[NSException raise] + 9
3 Foundation 0x000000010fcbe00b -
以下省略
エラーメッセージ
###該当のソースコード
import UIKit class webViewPageViewController: UIViewController, UIWebViewDelegate,UIPickerViewDelegate, UIPickerViewDataSource { @IBOutlet weak var changeMode: UISegmentedControl! @IBOutlet weak var webView: UIWebView! //往路を表示するボタン @IBOutlet weak var outward: UIButton! //復路を表示するボタン @IBOutlet weak var inward: UIButton! @IBOutlet weak var picker: UIPickerView! // 選択肢 let dataList = ["iOS", "macOS", "tvOS", "Android", "Windows"] let dataList2 = ["りんご", "ばなな", "おれんじ", "すいか"] override func viewDidLoad() { super.viewDidLoad() self.webView.delegate = self self.view.addSubview(webView) // プロトコルの設定 picker.delegate = self picker.dataSource = self // はじめに表示する項目を指定 picker.selectRow(1, inComponent: 0, animated: true) picker.selectRow(2, inComponent: 1, animated: true) self.view.addSubview(picker) /* let initialUrl = NSURL(string: "") let request = URLRequest(url: initialUrl! as URL) // Webページを開く self.webView.loadRequest(request) self.webView.scalesPageToFit = true */ } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func showOutward(_ sender: UIButton) { let url = NSURL(string: "https://transit.yahoo.co.jp/search/result?flatlon=&from=%E4%BA%AC%E6%88%90%E6%9B%B3%E8%88%9F&tlatlon=&to=%E5%AE%9D%E7%94%BA&&ticket=ic&userpass=1&al=1&shin=1&ex=1&hb=1&lb=1&sr=1&s=0&expkind=1&ws=3&kw=%E5%AE%9D%E7%94%BA") let request = URLRequest(url: url! as URL) // Webページを開く self.webView.loadRequest(request) self.webView.scalesPageToFit = true } @IBAction func showInward(_ sender: UIButton) { let url = NSURL(string: "https://transit.yahoo.co.jp/search/result?flatlon=&from=%E5%AE%9D%E7%94%BA&tlatlon=&to=%E4%BA%AC%E6%88%90%E6%9B%B3%E8%88%9F&via=&via=&via=&&type=1&ticket=ic&userpass=1&al=1&shin=1&ex=1&hb=1&lb=1&sr=1&s=0&expkind=1&ws=3&kw=%E4%BA%AC%E6%88%90%E6%9B%B3%E8%88%9F") let request = URLRequest(url: url! as URL) // Webページを開く self.webView.loadRequest(request) self.webView.scalesPageToFit = true } func numberOfComponents(in pickerView: UIPickerView) -> Int { // 表示する列数 return 2 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { // アイテム表示個数を返す if component == 0 { // 1個目のピッカーの設定 return dataList.count } return dataList2.count } // UIPickerViewDelegate func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { // 表示する文字列を返す if component == 0 { // 1個目のピッカーの設定 return dataList[row] } return dataList2[row] } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { // 選択時の処理 if component == 0 { // 1個目のピッカーの設定 print(dataList[row]) } print(dataList2[row]) } } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */
###試したこと
デバッグをするに、delegateのところでエラーが出ているようで、
もろもろ試してはおりますがなかなか事象が解決しません。
どうかお知恵を拝借できませんでしょうか。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答1件
あなたの回答
tips
プレビュー