- 質問の概要
現在作成中の個人アプリを実機でビルドして、デバッグしていたところ、ログイン画面から、タブバーに画面遷移する際にアプリがクラッシュしました。
デバッグエリアには、ログが表示されていますが、エラーログと判断できるものもなく、調べても解決に至りませんでしたので、質問させて頂きました。
- 前提となる情報
今回クラッシュした箇所は実機(IPhoneX)を最新版にアップデートする前は、クラッシュしていなかった。今回クラッシュする前はスプラッシュ画面の段階でクラッシュしていたこともあったが、GeneralのFrameworks,Libraries,and Embeded Contentにframeworkを追加することで解消された経緯があります。キャッシュの削除や再起動などは試しました。
参考にした記事- https://qiita.com/mono0926/items/bf70c7ef15db046ee163
https://lab.sonicmoov.com/development/iphone-app-dev/iphone-debug/
登録画面コード: 以下
class RegistrationViewController: UIViewController,UITextFieldDelegate{ var array = [String]() @IBOutlet var babyName: UITextField! @IBOutlet var sex: UISegmentedControl! @IBOutlet var birthdarButton: UIButton! @IBOutlet var addButton: UIButton! var textField = “” var sexSelect = UIImage() var birthday = Date() var birthdayLabel1 = “” let defaults = UserDefaults.standard override func viewDidLoad() { super.viewDidLoad() babyName.delegate = self } @IBAction func sexSelect(_ sender: UISegmentedControl) { switch sex.selectedSegmentIndex{ case 0: sexSelect = UIImage(named: “babys”)! let data = sexSelect.pngData() defaults.set(data, forKey: “image”) case 1: sexSelect = UIImage(named: “girl”)! let data = sexSelect.pngData() defaults.set(data, forKey: “image”) case 2: sexSelect = UIImage(named: “cherry”)! let data = sexSelect.pngData() defaults.set(data, forKey: “image”) default: print(“error”) } } @IBAction func birthdayButton(_ sender: Any) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) if segue.identifier == “tabBar” { if let tabVC = segue.destination as? UITabBarController, let navVC = tabVC.viewControllers?.first as? UINavigationController, let destVC = navVC.viewControllers.first as? RecordViewController { destVC.name = self.babyName.text! destVC.babyImageView = self.sexSelect destVC.birthdayLabel2 = birthdayLabel1 } } } @IBAction func add(_ sender: Any) { ←ここをタップするとクラッシュ self.performSegue(withIdentifier: “tabBar”, sender: self) textField = babyName.text! //入力した名前を保存 defaults.set(babyName.text, forKey: “Name”) } //キーボード閉じる func textFieldShouldReturn(_ textField: UITextField) -> Bool { babyName.resignFirstResponder() return true } }
- 期待する挙動
登録画面から、タブバーへ画面遷移させたい。
- 発生したエラーや意図しない挙動の説明
エラー文: Thread 1: signal SIGABRT
デバッグエリアに表示されているログ:
2020-02-15 00:31:03.119956+0900 ParentingApp12[1723:116776] <UIView: 0x105707180; frame = (0 0; 375 812); autoresize = W+H; layer = <CALayer: 0x283075080>>’s window is not equal to <ParentingApp12.TabBarController: 0x108037800>’s view’s window!
- デバッグ内容と自身の考察
ブレークポイント設定により、デバッグを実施しましたが、クラッシュ時に原因箇所で止まらず、「class AppDelegate: UIResponder, UIApplicationDelegate」の部分に「Thread 1: signal SIGABRT」とエラーが出ます。画面遷移を設定している
@IBAction funcメソッドあたりに問題があると思い調べているのですが、Identifierの設定などにも問題はなく、クラッシュログの解析というものがあると知り、WindowのDeviceから実機のクラッシュログを表示させるところまでは、できたのですが、解析には至らず、解決につながる記事にたどり着けていません。今回の事象について何が原因となり得るのか分かっていないため、何かアドバイスを頂けないでしょうか。
- 求める回答
Thread 1: signal SIGABRTやデバッグエリアにエラーログが表示されずにクラッシュした場合の対処方法について
Generalなどの設定を誤っていじってしまった場合に、クラッシュする原因となり得るのか
回答1件
あなたの回答
tips
プレビュー