앱 제작 도중 만난 에러다.

여기에 막혀서 며칠이나 해맸다.. 늘 그렇듯 정말 사소한 실수였고, 모르면 그만큼 고생하게 된다는 걸 느꼈다. 

 

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView){
        if let eventAnnotation = view.annotation as? EventAnnotation{
            print("\(eventAnnotation.title)핀이 눌렸습니다.")
            if let contentVC = storyboard?.instantiateViewController(identifier: "SearchVC") as? SearchVC{
                contentVC.updateView(eventAnnotation.title!, "", "")
            }
        }
    }

메인 컨트롤러에 있는 맵뷰의 핀을 누르면 이벤트 처리를 통해 FloatingPanel(SearchVC를 할당하였다.)에 띄워져 있는 뷰에 접근하려하였다.

func updateView(_ text1:String, _ text2:String, _ text3:String) {
        self.APGroupName.text = text1
        self.addressDong.text = text2
        self.addressDetail.text = text3
    }

이벤트 발생 시 SearchVC 클래스의 IBOutlet label의 텍스트를 수정하려는 부분에서 해당 에러가 발생했다.

에러의 원인은 검색을 통해서 금방 찾을 수 있었는데 원인은 바로 할당되지 않은 변수(nil)에 값을 넣으려니 에러가 발생한 것.. 

여기서 눈치를 챘어야했는데 바보같이 updateView()부분만 계속해서 수정했었다.

 

열심히 삽질을 하다가 문득 FloatingPanel쪽을 들여다 보게되었고, 여기서 해법을 찾았다.

나는 FloatingPanel에 띄워져 있는 뷰 컨트롤러에 접근을 해야했는데, 스토리보드의 instantiateViewController()를 통해 접근하려 했으니, 존재하지 않는 뷰에 접근하려 해서 에러가 발생했던 것이다. 

+ Recent posts