1. 멀티 스크린 앱용 Segues 및 탐색
-cocoa touch class는 애플UIKit와 전체 무리를 포함하는 프레임 워크를 말한다. //지난 시간 우리가 직접 UIKit를 수입해오고, UIViewController class를 가져오고, viewDidLoad( )를 직접 작성한 것들이 존재하는 프레임 워크다.
-메인스토리보드의 두 번째 화면과 결과 뷰 컨트롤러를 연결시키기 위해서 두 번째 화면의 뷰 컨트롤러를 누르고, 신원조사관을 눌러 class를 ResultViewController로 변경해준다.
-컨트롤을 누르고 refactor -> rename으로 이름을 변경할 수 있다.
-지난 시간에는 self.present를 통해 화면 전환을 이루었지만 메인 스토리 보드에서 컨트롤을 누른채 뷰 컨트롤러에서 다음 뷰 컨트롤러로 연결시킨 후 present Modally를 누르면 더 쉽게 화면 전환을 이룰 수 있다. 또한 화면 전환할 때 애니메이션을 넣을 수 있다. segue를 나타내는 작은 화살표를 선택한 다음 특성 검사기에서 전환 유형 중 마음에 드는 한 가지를 선택하면 가능하다.
-segue를 사용하기 위해서 UIViewController의 performSegue( ) 메서드를 이용한다.
ex) self.performSugue( withIdentifier: string, sender: self )
-override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == " goToResult " { 1번 주석
let destinationVC = segue.destination as! ResultViewController 2번 주석
destinationVC.bmiValue = bmiValue}}
1번 주석: 더 많은 화면이 존재한다고 할 때 맞는 세그웨이를 찾아서 화면을 전환시켜야 하기 때문에 세그웨이 식별자가 일치한지 조건문을 사용한다.
2번 주석: destinationVC가 목적지의 ResultViewController 클래스를 캐스팅해야 ResultViewController 내에 만들어둔 변수 bmiValue를 통해 계산 결과를 내보낼 수 있기 때문이다. destinationVC와 segue.destination의 대상은 UIViewController이지만 변수 bmiValue는 resultviewcontroller이기 때문이다. 해결방법은 let destinationVC = segue.destination as! ResultViewController로 바꿔 주는 것이다. 여기서 as는 결과뷰컨트롤러로 다운 캐스팅 하겠다는 의미이다.
-계산 결과를 확인하고, 다시 이전 화면으로 되돌릴 수 있도록 self.dismiss(animated: true, completion: nil)을 사용한다. 여기서 컴플리션은 우리가 완료한 후에 아무일도 발생하지 않도록, nil로 설정한 것이다.
2. 계산기 만들기를 통해 mvc채택
-모델 안에 새로운 파일로 calculatorBrain을 만들고, calculatorBrain 구조체를 만들었다.
-calculatorBrain 구조체 안에 bmi 계산 함수와 segue를 통해서 목적지로 가는 값을 bmi 계산 함수의 결과값으로 넣었다.
-
'개린이 이야기' 카테고리의 다른 글
2022년 03월 10일의 이야기 (0) | 2022.03.11 |
---|---|
2022년 03월 07일의 이야기 (0) | 2022.03.07 |
2022년 03월 04일의 이야기 (0) | 2022.03.04 |
2022년 03월 03일의 이야기 (0) | 2022.03.03 |
2022년 02월 28일의 이야기 (0) | 2022.02.28 |