任意の日付の情報を選択・参照できるiOSアプリを開発しています。
日付の選択にはdatePickerを採用し、以下の画像のような簡単なサンプルを作成しました(こちらを参考にさせていただきました→https://teratail.com/questions/65426)
「Button」をタップすると日付選択画面に移行し、任意の日付を選択した後「done」をタップすると、元の画面の「Label」に選択した日付が表示されるものです。
storyboardからViewControllerへLabelの紐付けを行った後、実行してみたのですが、Thread 1: signal SIGABRTというエラーが発生しました。storyboardとViewControllerの紐付けを削除したときに起こるエラーのようですが、紐付けを調べてみると接続したLabelに「!」がついていて、「ViewController does not have an outlet named label」とありました。
storyboardからViewControllerへの接続の仕方は間違えていないと思うのですが、なぜかSIGABRTエラーが発生してしまいます。
このエラーの原因と対策方法についてご教示いただけると幸いです。また、本文にわかりづらい点などあればご指摘下さい。
よろしくお願いいたします。
※参考元とほぼ同じですが、このアプリのコードを以下に示します。
FirstViewController.swift
swift4
1import UIKit 2 3class FirstViewController: UIViewController { 4 5 6 @IBOutlet weak var label: UILabel! 7 8 9 @IBAction func Done(segue: UIStoryboardSegue) { 10 let secondVC = segue.source as! SecondViewController 11 let datePicker = secondVC.datePicker 12 13 let date = datePicker?.date 14 15 let formatter = DateFormatter() 16 formatter.dateStyle = .medium 17 formatter.timeStyle = .none 18 formatter.dateFormat = "yyyyMMdd" 19 20 let dateText = formatter.string(from: date!) 21 22 label.text = dateText 23 } 24 25 override func viewDidLoad() { 26 super.viewDidLoad() 27 // Do any additional setup after loading the view, typically from a nib. 28 } 29 30 override func didReceiveMemoryWarning() { 31 super.didReceiveMemoryWarning() 32 // Dispose of any resources that can be recreated. 33 } 34 35 36} 37
SecondViewController.swift
Swift4
1import UIKit 2 3class SecondViewController: UIViewController { 4 5 @IBOutlet weak var datePicker: UIDatePicker! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 // Do any additional setup after loading the view. 11 } 12 13 override func didReceiveMemoryWarning() { 14 super.didReceiveMemoryWarning() 15 // Dispose of any resources that can be recreated. 16 } 17 18} 19
回答1件
あなたの回答
tips
プレビュー