액션 세그웨이(Present Modally)와 viewWillAppear에 대해서

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • mi kim
      참가자
      • 글작성 : 10
      • 답글작성 : 8

      안녕하세요, ios 공부를 막 시작한 학생입니다.

      화면 전환에 대해서 질문이 있습니다.

       

      뷰컨트롤러에서 viewWillAppear은 처음 생성될때, 화면이 다른 화면에 의해 가려졌다가 다시 나타날때 호출된다고 알고 있습니다.

       

      1. 스토리보드에서 액션 세그웨이(Present Modally)로 화면 전환을 한 후,

      다시 원래 화면으로 이동하기위해 되돌아가기 버튼 이벤트로 self.presentingViewController?.dismiss을 호출하여 되돌아갔을때,

      원래 화면의 뷰컨트롤러에서 viewWillAppear은 호출되지 않는데 올바른 작동인가요?

      제 생각대로라면 가려졌다가 다시 나왔으니 호출되어야 할 것 같았습니다…

       

      1. navigation controller 사용했을 때와 같이 새로운 화면이 완전히 뒤덮이고, 다시 원래 화면으로 되돌아가는 방식에서는

      원래 화면의 뷰컨트롤러의 viewWillAppear는 정상적으로 호출되고 있습니다.

      Present Modally로 사용했을 때는 새로운 화면 뒤에 원래 화면이 조금 보이는데,

      혹시 viewWillAppear은 화면이 완전히 새롭게 그려지는  방식일때만 호출되는건가요?

      • 이 게시글은 mi kim에 의해 4 years, 1 month 전에 수정됐습니다.
      • 이 게시글은 mi kim에 의해 4 years, 1 month 전에 수정됐습니다.
    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579

      새로이 보여지는 모달의 modalPresentationStyle 스타일이 완전히 화면을 덮는 .fullScreen이 아니기 때문에 그렇습니다 🙂
      iOS 13 이전엔 기본값이 .fullScreen 이었는데 13이후부터 .automatic으로 변경되고, 모달 스타일 각각의 디자인이 변경되면서 다 덮지 않는 경우도 생겼습니다.
      이에 따라 viewWillAppear의 동작여부도 달라질 수 있습니다. 그렇지만 이는 향후 iOS의 버전 변경에 따라 또 달라질 수 있으니 버전 변경에 따라 변경 포인트도 확인해봐야겠죠? 🙂
      모달이 dismiss 할 때 viewWillAppear가 호출되길 원한다면 modalPresentationStyle.fullScreen 스타일로 변경해보세요.

      modalPresentationStyle

    • mi kim
      참가자
      • 글작성 : 10
      • 답글작성 : 8

       

       

      조언해주신대로 Presentation : Same As Destination 으로 되어있던 것을 Full Screen으로 바꾸니 정상 작동 합니다!

      화면이 완전히 가려지지 않는 경우에는 호출되지 않는 것이군요 ㅠㅠ

      답변 정말 감사합니다!

2 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom