BOID

[iOS] 전처리 메소드의 활용 -HoonIOS 본문

IOS 시작기

[iOS] 전처리 메소드의 활용 -HoonIOS

HoonIOS 2021. 3. 29. 23:28

안녕하세요 HoonIOS입니다. :)

지금까지 세그웨이를 통한 화면 전환에 대해 알아봤는데요, 세그웨이를 이용하면 화면을 전환하는 과정 전에 특정한 메소드를 호출하도록 설계가 되어있는데 이것을 이용하면 화면을 전환하기 전에 필요한 처리를 해줄 수 있습니다.

 

이렇게 화면을 전환하기 전에 호출하는 특정한 메소드를 전처리 메소드라고 합니다.

 

전처리 메소드 실행

- 전처리 메소드는 세그웨이가 실행하기 전에 값을 저장해둘 필요가 있거나, 경고창을 띄어주는 등의 처리를 해야 하는 경우 전처리 메소드에 해당 내용을 작성해 놓으면 세그웨이가 실행 전에 자동으로 실행이 먼저 됩니다.

- 이 메소드는 다른 메소드와 같이 따로 우리가 직접 호출하는 것이 아니라 구현을 해놓으면 시스템이 알아서 호출을 하는 것입니다.

 

  • 형식
    prepare(for segue: UIStoryboardSegue, Sender: Any?) { ... }

- 전처리 메소드 형식을 보면 매개변수가 두 개가 있습니다.

  • 첫 번째 매개변수는 메소드를 호출한 세그웨이 객체입니다. 즉 다시말해 하나의 전처리 메소드를 여러 세그웨이가 공유를 하는 방식인데, 이 여러 세그웨이를 구분해주기 위해 그에 대한 정보가 첫 번째 매개변수를 통해 전달이 됩니다.
    따라서 구분을 해주기 위해서는 이를 조건별 작업을 처리해주면 됩니다.

    * 추가 사항!!!!(2021.05.06)
    segue 변수에 중요한 정보가 하나 있다고 하네요! 바로 해당 세그웨이의 출발지와 목적지에 대한 정보입니다. 따라서 출발지와 목적지의 뷰컨트롤러의 속성을 포함하고 있어 쉽게 뷰컨트롤러를 참조할수 있습니다. 그럼 어떻게 접근하는지 알아야겠죠? 출발지 정보는 segue.source, 목적지 정보는 segue.destination 속성에 저장이 됩니다.! 이 정보의 반환 타입은 UIViewController타입으로 반환되어 원하는 타입으로 캐스팅해서 사용을 할수 있습니다.
  • 두 번째 매개변수는 세그웨이를 실행하는 트리거에 대한 정보입니다. 화면 내에 있는 여러 요소가 동일 세그웨이를 실행할 수 있으니 어느 객체가 트리거 역할을 했는지 종종 알아야 할 때 이 매개변수에서 이에 대한 정보가 전달됩니다.

    * 추가 사항!!!!(2021.05.06)
    이 매개변수는 메시지를 보낸 대상을 가리키는 값으로 여기서는 세그웨이를 실행한 객체를 의미를 합니다.
    매뉴얼 세그웨이로 실행되었을때 sender매개변수에는 뷰컨트롤러 정보가 담겨 전달되고 트리거 세그웨이가 발생하면 사용자가 누른 버튼이나 테이블 셀 등의 대상 객체 참조 정보가 전달이 됩니다.

    ( 만약, 액션 세그웨이라면 버튼, 테이블 셀, 제스처 등이 주 대상이 되고 매뉴얼 세그웨이라면 뷰 컨트롤러 자신이 인자 값으로 전달됩니다.)

- 전처리 메소드는 이미 UIViewcontroller 내부에 정의가 되어있으므로 재정의를 해주어야 합니다.

- 한번 prepare를 재정의 해줘서 화면 전환 전에 로그가 찍히는지 확인해보겠습니다.

- 아래 사진은 prepare를 재정의 해주어 화면 전환 실행 전에 Xcode 콘솔 창에 log가 찍히도록 NSLog를 정의해주었습니다.

전처리 매소드 재정의

* 참조

- NSLog는 파운데이션 프레임워크에서 정의된 클래스로, Xcod의 디버그 콘솔에 출력을 하는 기능을 합니다.

- 이제 버튼을 누르면 세그웨이 실행 전에 로그가 찍히는 것을 볼 수 있습니다.

 

 

이제는 세그웨이가 여러 개일 때 전처리메소드에서 세그웨이를 구분해 로그를 찍어 보겠습니다.

- 우선 presentSegue 버튼을 새로 만들어주고 이동할 뷰 컨트롤러에 present Modally세그웨이로 구현해줍니다.

presentSegue 버튼 생성

- Next 버튼의 커스텀 세그웨이 identifier를 custom_segue로 지정해주고 presentSegue 버튼의 세그웨이 identifier를 action_segue로 지정을 해줍니다.

세그웨이 Identifier 지정

 

- 이제 전처리 메소드의 segue 매개변수와 세그웨이의 identifier를 통해 세그웨이를 구분하여 세그웨이에 따라 로그를 찍는 조건 소스를 작성합니다.

세그웨이 구분하는 코드

- 이제 실행을 하면 아래 결과 영상과 같이 세그웨이의 identifier에 따라 로그가 찍히는 것을 볼 수 있습니다.

 

 

전처리 메서드에 대해서 알아보았습니다. 세그웨이에 따라 구분할 수 있을 만큼 화면 전환을 할 때 값을 전달하거나, alert를 할때 잘 사용할 메소드이니 잊지 않고 기억해야 할 거 같습니다 ㅎㅎㅎ

 

이제 화면 전환에 대해 포스팅을 다했는데요, 이제는 화면 전환할 때 값을 같이 전달하는 부분에 대해 포스팅하겠습니다 :)

반응형
Comments