LetsSwifty/Swift_Bible

[iOS] : CHAPTER 04 - 메뉴얼 세그웨이와 액션 세그웨이 차이점 질문

Closed this issue · 3 comments

[iOS] : CHAPTER 04 - 메뉴얼 세그웨이와 액션 세그웨이 차이점 질문

관련 챕터: 4.5세그웨이를 이용한 화면 전환(p.213)

시작점이 뷰컨트롤러이면 메뉴얼 세그웨이, 버튼 등의 트리거가 발생할 수 있는 지점이라면 액션 세그웨이입니다. 그런데 책에 나와있는 예시를 보면, 메뉴얼세그웨이를 위한 버튼을 추가하고, 그 안에 세그웨이 코드를 작성하는데요. 이렇게 되면 결국 버튼을 누르는 액션을 취했을 때 세그웨이를 통해 화면을 전환하게 되는 것 아닌가요?

예를 들어 어떤 액션이 취해졌을 때, 무조건 같은 화면을 전환하는 게 아니라 사용자의 상태 별로 다른 화면을 보내준다던지, 특정 상태일 때에만 화면 전환 함수가 동작하도록 한다던지 하는 등의 처리가 필요할 때 사용하는 건가요? 🤔

🙋 언제 메뉴얼을, 언제 액션을 사용하는 것인지 궁금합니다!

개인적으로 액션 세그웨이와 매뉴얼의 차이점은 식별자 필수와 세그웨이시 커스텀의 여부라고 생각해요

버튼을 통해 액션 세그웨이 방식으로 화면을 전환할 때 식별자가 필수가 아니지만
매뉴얼 세그웨이 performSegue(withIdentifier:,sender:) 메소드를 사용하기 위해서는 식별자가 필수로 지정을 해야 해당 세그웨이를 실행할 수 있고
performSegue(withIdentifier:,sender:) 메소드 직후 prepare(for segue: UIStoryboardSegue, sender: Any?) 호출이 되며 클로저함수처럼 사용 가능하다고 생각하고있어요

액션 세그웨이에서의 액션은 사용자가 발생시키는 이벤트라는 범위로 한정짓는 것이 아닐까 생각합니다. 그에반해 메뉴얼 세그웨이는 사용자의 액션 뿐만 아니라 completion handler 혹은 viewDidLoad()와 같은 다양한 경로로 performSegue()를 직접(='메뉴얼 하게') 동작시키는 것이기 때문에 책에 나온 버튼은 그 예시중 하나 아닐까 하는 생각이 듭니다!

언제 메뉴얼을, 언제 액션을 사용하는지 그 예시는 정확하게 모르겠으나, 만일 "오직 사용자의 이벤트로만 세그웨이를 동작시키겠어!" 라는 의도만 있다면 액션 세그웨이를, 그 뿐 아니라 "다른 상황에서도 세그웨이를 동작시키겠어!" 라는 의도가 있다면 메뉴얼 세그웨이를 사용하지 않을까 하는 생각이 듭니다:)

https://boidevelop.tistory.com/25 <-- 여기 블로그에 설명이 잘 되어있는 것 같아요. 한 번 참고해보세요!