💻 개발/오늘의 삽질

[iOS / Swift] Exception NSException * "-[UIView setText:]: unrecognized selector sent to instance

고도고도 2022. 9. 7. 16:08

Delegate로 특정 Cell을 클릭했을 때 상세 정보 페이지로 이동하도록 구현했다.

extension ViewController : UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        guard let viewController = self.storyboard?.instantiateViewController(identifier: "DiaryDetailViewController") as? DiaryDetailViewController else { return }
        
        let diary = self.diaryList[indexPath.row]
        viewController.diary = diary
        viewController.indexPath = indexPath
        
        self.navigationController?.pushViewController(viewController, animated: false)
    }
}

 

상세 정보 페이지인 DiaryDetailViewController에서는 전달받은 diary 객체를 가지고 View를 초기화한다.

//
//  DiartyDetailViewController.swift
//  Basic_05
//
//  Created by 고도 on 2022/09/06.
//

import UIKit

class DiaryDetailViewController: UIViewController {
    
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var contentsTextView : UITextView!
    @IBOutlet weak var dateLabel: UILabel!
    
    var diary : Diary?
    var indexPath : IndexPath?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.configureView()
    }
    
    private func configureView() {
        guard let diary = self.diary else { return }
        self.titleLabel.text = diary.title
        self.contentsTextView.text = diary.contents
        self.dateLabel.text = self.dateToString(date: diary.date)
    }
    
    private func dateToString(date : Date) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = "yy년 MM월 dd일(EEEEE)"
        formatter.locale = Locale(identifier: "ko_KR")
        return formatter.string(from: date)
    }
}

 

이후 빌드를 진행했는데 Cell을 클릭하면 아래와 같은 오류가 발생하며 앱이 중지됐다.

Exception NSException * "-[UIView setText:]: unrecognized selector sent to instance 0x13110b480" 0x0000000283b5d920

 

Outlet변수와 View가 제대로 연결되어 있지 않다는 생각에 스토리보드를 살펴봤다. Outlet변수에 마우스를 갖다놓으면 스토리보드 상에서 연결된 View에 대한 정보를 확인할 수 있는데 titleLabel은 UILabel이 아닌 UIView와 연결되어 있는 것을 발견할 수 있었다.

 

contentsTextView
dateLabel

 

titleLabel의 기존 연결을 제거하고정상적으로 연결해주었다.

 

titleLabel