인프런 커뮤니티 질문&답변

suky님의 프로필 이미지
suky

작성한 질문수

앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지

활용-4 앱 (BMI앱) / MVC패턴 적용하기 2 (추가 리팩토링) (활용 앱42강)

활용4 데이터이동과 화면전달 중 "직접세그웨이"관련문의

작성

·

288

1

안녕하세요.

화면이동 방법 중 직접 세그웨이 활용 시 세그웨이에 연결한 버튼을 IBAction 코드 작성필요 여부 문의입니다.

이유는 수업 참고파일 중

1.NextVC 2.BMI 파일에 다르게 구현되어있기 때문입니다.

NextVC에서는 IBAction 코드가 미작성되어있고

BMI파일에서는 "BMI계산하기"버튼에 대한 IBAction 코드가 작성되어있습니다.

2번파일에서 prepare함수를 호출하기때문에 IBAction을 제외해도 되지 않나해서 돌려보니 에러가 납니다.

 

기초적인 질문일것같은데 답변 부탁드립니다. :)

 

답변 2

1

Suky님의 프로필 이미지
Suky
질문자

도움이 되었습니다. 감사합니다!

1

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

안녕하세요! didttn님!

말씀하신대로, 직접 세그웨이의 경우.. @IBAction을 지우셔도, prepare 함수가 호출되기 때문에.. 당연히 가능합니다.

즉, 제가 @IBAction으로 연결한 calculateButtonTapped 함수부분의

bmi = calculateBMI(height: heightTextField.text!, weight: weightTextField.text!)


BMI계산 로직을 아래처럼 prepare함수 부분으로 옮기시고, 구현하시면 되고..
image

그런데
지금 현재 에러가 나시는 이유는.. 아마도 기존에 스토리보드랑 함수가 연결되었던 부분을.. 단순히 함수를 삭제하셔서 에러가 날 것 같아요. 스토리보드에서 코드랑 연결시키면.. 스토리보드 코드 내부에는 함수랑 연결되었던 코드가 그대로 남아있기 때문에.. 버튼을 선택하신 후, 코드와 연결된 함수 부분의 "연결을 잘 끊어주셔야" 에러가 나지 않습니다.

image
버튼을 선택하시고, 오른쪽의 Connection Inspector부분에서 제가 캡처한 것처럼 연결이 잘 끊겨 있어야 에러가 나지 않으니.. 잘 확인해보시면 좋을 것 같습니다.


그리고 추가적으로 말씀드리면..
일반적으로 직접 세그웨이 연결 방식을 쓰더라도.. (보통은 로직 코드를 눈으로 더 잘 확인하기 위해서) @IBAction연결을 해놓고, 사용하는 편입니다. (스토리보드 방식을 사용하는 경우, 워낙 스토리보드와 코드가 분리되기 때문에.. 개발자가 코드를 놓칠 수 있는 부분이 많이 생기기도 하기 때문에, 그런 부분을 방지하기 위해서 그렇습니다.)

그리고, 제 강의에서 다른 방식도 다 설명드리지만, 코드로 화면이동을 하거나, 스토리보드로 화면 이동을 하는 경우에 로직을 더 잘 확인하기 위해서.. 세그웨이 이동방식은 잘 사용하지 않는 편입니다. (코드로 스토리보드의 인스턴스를 생성해서 프리젠트를 해서 사용하는 경우가 많습니다.)
(제가 그럼에도 세그웨이를 설명드리는 이유는.. 그래도 일단은 처음 배울때 여러가지 방식이 있다는 것은 잘 알고 있는 것이 중요하다고 생각하기 때문입니다. 실력이 올라가면.. 여러가지 방법중에서 취사 선택이 가능하니까요.)

위에 설명드린 내용을 잘 확인하셔서, 에러 부분을 잘 처리하시면 좋을 것 같네요!

감사합니다. :)

suky님의 프로필 이미지
suky

작성한 질문수

질문하기