【SwiftUI】 커스텀 다이얼로그의 표시와 관리

4000 단어 XcodeiOSSwiftSwiftUI

【SwiftUI】 Manage Custom Dialogs



Goal


  • 커스텀 View를 작성해, 그것을 다이얼로그로서 표시한다
  • 여러 대화 상자를 표시 할 수 있습니다.

    배경



    SwiftUI에서는 Alert을 사용하여 표준 경고를 볼 수 있습니다.
    그러나 UIKit를 사용하여 개발했을 때와 같이 자신의 View를 대화 상자로 표시하고 싶을 수 있습니다.
    또한 한 화면에 여러 패턴의 대화 상자를 표시할 수도 있습니다.
    이러한 요구 사항을 충족하는 것을 소개합니다.

    하지만



    이번에 작성하는 것은 다음과 같습니다.
    전체 코드는 마지막에 있으므로 참고하십시오.



    콘텐츠 패턴



    먼저 사용자 정의 대화 상자 보기를 만듭니다.
    (나중에 다이얼로그의 배경을 투과하는 처리를 공통으로 넣기 때문에, 그 부분은 불필요합니다)
    View 를 계승한 파트입니다.



    그리고 이것들을 정리한 Enum를 작성합니다.
    이렇게 하면 앱 내에서 커스텀 대화상자를 사용하는 경우를 목록에서 볼 수 있으며, 특정 경우에 View를 교체하는 것도 쉽습니다.



    ( case 의 명명이 contentDetail01 와 같이 되어 있습니다만, 실제로는 보다 상세한 명명이 좋다고 생각합니다. 단순화를 위해서 그렇게 하고 있습니다.)

    Manage Dialog Presentation



    그런 다음 대화 상자의 표시를 제어하는 ​​클래스를 만듭니다.
  • 표시 플래그 업데이트
  • 표시 할 콘텐츠 설정

  • 을 담당합니다.



    대화 상자 표시 View 에서 show 메서드를 사용하여 모든 내용을 표시합니다.

    Custom Dialog Modifier



    사용자 정의 대화 상자를 ViewModifier를 통해 표시합니다.
    이것은 이 문서: Custom View Dialog in SwiftUI | Swift UI recipes 를 참고로 하고 있습니다.
  • ViewModifiew에서 원래 콘텐츠 위에 사용자 정의 대화 상자를 표시합니다.
  • 전체 화면을 덮고 검은 색 투명한 색상을 배치하여 대화 형 UI로 만듭니다.

    라는 것이 주요한 점입니다.



    Set Up



    이상으로 요소가 갖추어졌습니다.View 에서 대화 상자를 표시해 봅시다.


    View 에서는 DialogPresentation 를 유지합니다.
     dialogPresentataion.show(
                        content: .contentDetail01(isPresented: $dialogPresentataion.isPresented))
    

    와 같이 대화 상자를 표시합니다.
    다이얼로그측에서 닫는 버튼을 눌렀을 때에 플래그를 갱신하므로, isPresented 를 건네주고 있습니다.

    Summary



    다이얼로그 표시의 책무를 가지는 관리 클래스를 작성하는 것으로, 다이얼로그를 표시할 때의 처리를 은폐해, 또 복수의 표시 패턴에 대응할 수 있었습니다.

    보다 좋은 방법, 문제점등 있으면 부담없이 코멘트 받을 수 있으면 다행입니다.

    전체 코드는 여기

    References


  • Custom View Dialog in SwiftUI | Swift UI recipes
  • 좋은 웹페이지 즐겨찾기