전에는 코드만을 사용해서 직접뷰를 호출해주었지만, 출력해야 하는 뷰가 많아지면 일일히 그렇게 해주기에는 부담이 될 것이다. 이를 위해서 애플에서 제공하는 segue를 사용한다.
Calculate View Controller 에서 control(^)을 누른 채로 Result View Controller에 놓은후 마우스를 떼면 segue를 생성할 수 있다. 여기서는 Present Modally로 설정해 주었고, Attribute Instpector에서
위와같이 생성된 segue를 선택하면 Attribute Inspector에서 Identifier를 설정할 수 있다.
그러면 이제 Calculator Inspector에서 performSegue메서드를 사용하여 Segue를 사용할 수 있다. withIdentifier에는 Segue의 이름이 주어지고, sender는 Segue를 실행하는 클래스를 입력한다. 여기서는 CaculatorViewController가 호출하므로 self로 작성해준다.
그러면 어떻게 CaculateViewController 에서 계산한 bmi 값을 ResultViewController에 전달할 수 있을까?
애플에서 준비한 prepare 메서드를 사용한다. prepare 메서드는 뷰가 seque(세그웨이)를 호출할 때 Trigger되며, 새로운 뷰를 나타내기 이전에 필요한 데이터를 준비할 수 있게 해준다.
if 문으로 segue의 이름을 검사하고
destinationVC 변수에 segue의 목적지를 담고있다. 여기서 as문은 REsultViewController로 강제로 다운캐스팅을 시키라는 의미인데, as!를 통해서 강제로 수행하고있다. 다운캐스팅을 하는 이유는 단순히 segue.destination은 UIViewController 타입이기 때문에 bmiValue의 값을 전달해 줄수 없기 때문이다.
화면을 다시 돌아가도록 만드는 것은 간단하다. 새로운 segue를 생성해 줄 필요없이 dismiss메서드를 사용해 주면 뷰가 해제되어 이전의 뷰로 되돌아간다.
'iOS > StoryBoard' 카테고리의 다른 글
UISearchBar를 사용해서 목록 검색하기 (0) | 2022.02.01 |
---|---|
LottieFiles 를 이용한 iOS 앱에 애니메이션 추가하기. (0) | 2022.01.25 |
새로운 뷰를 나타내기, 값 전달 (0) | 2022.01.02 |
요소에 적용된 constraint확인 (0) | 2021.12.26 |
view, stack view (0) | 2021.12.26 |