前提・実現したいこと
performSegueで画面を遷移したいのですがエラーが出てしまいます。
発生している問題・エラーメッセージ
エラーメッセージ
Thread 1: "-[UIImageView setImage:forState:]: unrecognized selector sent to instance 0x142560850"
swift
1ソースコード 2import UIKit 3 4class MyPageViewController: UIViewController { 5 6 let userBGImage = UIImageView() 7 let scrollView = UIScrollView() 8 let editProfileButton = UIButton() 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 userBGImage.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 180) 14 userBGImage.image = UIImage(named: "Stadium") 15 view.addSubview(userBGImage) 16 17 scrollView.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: view.frame.size.height) 18 scrollView.contentSize = CGSize(width: view.frame.size.width, height: 2000) 19 scrollView.backgroundColor = .clear 20 view.addSubview(scrollView) 21 22 editProfileButton.frame = CGRect(x: view.frame.size.width - 120, y: 100, width: 100, height: 36) 23 editProfileButton.layer.cornerRadius = 18 24 editProfileButton.backgroundColor = .clear 25 editProfileButton.layer.borderColor = FHPink.cgColor 26 editProfileButton.layer.borderWidth = 1 27 editProfileButton.setTitle("Edit Profile", for: .normal) 28 editProfileButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 14) 29 editProfileButton.setTitleColor(FHPink, for: .normal) 30 editProfileButton.addTarget(self, action: #selector(editProfile), for: .touchUpInside) 31 scrollView.addSubview(editProfileButton) 32 33 } 34 35 @objc func editProfile(){ 36 performSegue(withIdentifier: "Edit", sender: nil) 37 38 print("success") 39 40 } 41 42 43}
試したこと
UIImageViewに関するエラーのように見えたので一度ImageViewを全て削除してみたりしたのですが同じエラーが出てしまいます。
補足情報(FW/ツールのバージョンなど)
xcodeのバージョンは13.1です。他のページでは問題なくこのやり方で画面遷移ができるのですがなぜかこのページではできません。また関数の中に書かれている[print("success")]だけを関数に入れると問題なく作動します。ご不明な点やもう少し説明が必要な場合はコメントいただけますと幸いです。
いまいち状況が謎なんですが、
・そのエラーはどのタイミングで出ますか? Edit Profile ボタンを押した時ですか?
・コードで画面を作ってるのに画面遷移は segue (つまり storyboard) なのでしょうか?
・setImage:forState: してるところが見当たりません。しかも UIButton のメソッドなのになぜ UIImageView に対して呼ばれてるんでしょうか?
ご返信ありがとうございます。
・エラーはボタンを押した際に出ています。試しにファイルのコードを全て消してstoryboardで物理的にUIButtonを設置してsegueを用いたとても初歩的な遷移を試してみたのですが、全く同じエラーが出てきてしまいました。もしかしたらこのファイルではなく他のファイルのUIImageViewが影響しているのかもしれません。
・遷移はコードを用いていたのですが同様のエラーが出ていたためsegueでも試していました。
・ご指摘の通りUIImageViewは全く使っていませんし、一度全てのコードを消して初歩的なボタンだけの繊維を試してみたのですがそれもダメでした。
このエラーが出てから一週間以上が経過していて、clean builderも何度も試したのでエラーの理由が本当にわかりません。
遷移先の画面に問題があるのでは?
あなたの回答
tips
プレビュー