강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của suky
suky

câu hỏi đã được viết

Phát triển ứng dụng iOS của Allen (Học UIKit từ nguyên lý cơ bản thông qua việc tạo ra 15 ứng dụng) - Cho đến MVVM

Ứng dụng thực hành 4 (Ứng dụng BMI) / Áp dụng mô hình MVC 2 (Refactoring bổ sung) (Bài 42 - Ứng dụng thực hành)

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

Viết

·

345

1

안녕하세요.

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

이유는 수업 참고파일 중

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

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

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

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

 

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

 

iosswift

Câu trả lời 2

1

Suky님의 프로필 이미지
Suky
Người đặt câu hỏi

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

1

allen님의 프로필 이미지
allen
Người chia sẻ kiến thức

안녕하세요! didttn님!

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

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

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


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

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

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


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

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

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

감사합니다. :)

Hình ảnh hồ sơ của suky
suky

câu hỏi đã được viết

Đặt câu hỏi