SwiftUI에서 현재보기를 바꾸는 방법은 무엇입니까?

현상금 사냥꾼

SwiftUI로 앱을 개발 중입니다.

NavigationView가 있고 탐색 모음에 버튼이 있습니다. 현재보기 (TabView 선택의 결과)를 다른보기로 바꾸고 싶습니다.

기본적으로 사용자가 "편집"버튼을 클릭하면 편집을 위해보기를 다른보기로 바꾸고 싶습니다. 사용자가 완료되면 "완료"단추를 클릭하면 이전보기로 복원됩니다.

변수를 사용하여 현재 탭보기에 표시되는보기를 동적으로 선택할 수 있지만 이것이 SwiftUI에서 "올바른 방법"이 아닌 것 같습니다. 이렇게하면 전환 시각 효과를 적용 할 수 없습니다.

내가 찾고있는 것을 설명하는 몇 가지 코드 샘플.

private extension ContentView {
    @ViewBuilder
    var navigationBarLeadingItems: some View {
        if tabSelection == 3 {
            Button(action: {
                print("Edit pressed")
                // Here I want to replace the tabSelection 3 view by another view temporarly and update the navigation bar items
                }) {
                    Text("Edit")
            }
        }
    }
}

struct ContentView: View {    

    var body: some View {
        NavigationView {
            TabView(selection: $tabSelection) {
                ContactPage()
                    .tabItem {
                        Text("1")
                    }
                    .tag(1)
                Text("Chats")
                    .tabItem() {
                        Text("2")
                    }
                    .tag(2)
                SettingsView()
                    .tabItem {
                        Text("3")
                    }
                    .tag(3)
            }.navigationBarItems(leading: navigationBarLeadingItems)
        }
    }
}

감사합니다

편집하다

내 뷰가 하나 또는 다른 것을 표시하도록하는 버튼 동작의 토글 변수를 업데이트하는 작업 버전이 있습니다. 작동하지만 애니메이션 효과를 적용 할 수 없으며 SwiftUI에서 "올바른"것처럼 보이지 않습니다. , 내가 모르는 더 나은 것이 있다고 생각합니다.

파웰로 2222

애니메이션을 추가하고 싶다면 다음을 시도 할 수 있습니다.

struct ContentView: View {
    ...
    @State var showEditView = false

    var body: some View {
        NavigationView {
            TabView(selection: $tabSelection) {
                ...
                view3
                    .tabItem {
                        Text("3")
                    }
                    .tag(3)
            }
            .navigationBarItems(leading: navigationBarLeadingItems)
        }
    }
}
private extension ContentView {
    var view3: some View {
        VStack {
            if showEditView {
                FormView()
                    .background(Color.red)
                    .transition(.slide)
            } else {
                Text("View 3")
                    .background(Color.blue)
                    .transition(.slide)
            }
        }
    }
}

struct FormView: View {
    var body: some View {
        Form {
            Text("test")
        }
    }
}

가능한 대안은 ViewRouter 를 사용하는 것입니다 : @EnvironmentObject를 사용하여 SwiftUI에서보기 사이를 탐색하는 방법 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

입력 순서를 바꾸는 방법은 무엇입니까?

분류에서Dev

SQL에서 ","기호를 " ','"로 바꾸는 방법은 무엇입니까?

분류에서Dev

문자열에서 '['를 찾아서 바꾸는 방법은 무엇입니까?

분류에서Dev

* ngFor에서 순서를 바꾸는 방법은 무엇입니까?

분류에서Dev

현재 URL을 남기지 않고 js에서 데이터를 보내는 방법은 무엇입니까?

분류에서Dev

Intellij에서 줄의 일부를 검색 / 바꾸기로 바꾸는 방법은 무엇입니까?

분류에서Dev

R에서 열의 데이터를 바꾸는 방법은 무엇입니까?

분류에서Dev

powershell에서 두 번째 문자를 바꾸는 방법은 무엇입니까?

분류에서Dev

gtext (R / gWidgets)에서 텍스트를 바꾸는 방법은 무엇입니까?

분류에서Dev

정규식에서 텍스트를 바꾸는 방법은 무엇입니까?

분류에서Dev

TextView에서 부분 텍스트를 바꾸는 방법은 무엇입니까?

분류에서Dev

Android에서 특수 문자를 바꾸는 방법은 무엇입니까?

분류에서Dev

OSX에서 왼쪽 하단 키를 바꾸는 방법은 무엇입니까?

분류에서Dev

Android에서 문자를 바꾸는 방법은 무엇입니까?

분류에서Dev

SwiftUI에서 ResearchKit 모달보기를 닫는 방법은 무엇입니까?

분류에서Dev

SwiftUI에서 그리드보기를 만드는 방법은 무엇입니까?

분류에서Dev

Lenovo 외장 키보드에서 제어 및 기능 키를 바꾸는 방법은 무엇입니까?

분류에서Dev

SAS에서 현재 단계를 기록하는 방법은 무엇입니까?

분류에서Dev

'\ n'을 유지하면서 '\'를 바꾸는 방법은 무엇입니까?

분류에서Dev

문자열 이름의 순서를 바꾸는 방법은 무엇입니까?

분류에서Dev

페이지의 시간 순서를 바꾸는 방법은 무엇입니까?

분류에서Dev

모든 화면에서 현재 Firebase 사용자를 확보하는 올바른 방법은 무엇입니까?

분류에서Dev

C #의 문자열에서 "찾기, 바꾸기, 다음"을 구현하는 방법은 무엇입니까?

분류에서Dev

swiftui를 사용하는 위젯에서 현재 위치를 얻는 방법은 무엇입니까?

분류에서Dev

Ubuntu16.04 / Gnome : 키보드에서 AltGr과 Ctrl을 바로 바꾸는 방법은 무엇입니까?

분류에서Dev

Ubuntu16.04 / Gnome : 키보드에서 AltGr과 Ctrl을 바로 바꾸는 방법은 무엇입니까?

분류에서Dev

한 키보드에서 ALT와 Windows 키를 바꾸는 방법은 무엇입니까?

분류에서Dev

sed에서 더하기 기호를 공백으로 바꾸는 방법은 무엇입니까?

분류에서Dev

SwiftUI에서 (다른) 크기 제한보기로보기를 마스킹하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    입력 순서를 바꾸는 방법은 무엇입니까?

  2. 2

    SQL에서 ","기호를 " ','"로 바꾸는 방법은 무엇입니까?

  3. 3

    문자열에서 '['를 찾아서 바꾸는 방법은 무엇입니까?

  4. 4

    * ngFor에서 순서를 바꾸는 방법은 무엇입니까?

  5. 5

    현재 URL을 남기지 않고 js에서 데이터를 보내는 방법은 무엇입니까?

  6. 6

    Intellij에서 줄의 일부를 검색 / 바꾸기로 바꾸는 방법은 무엇입니까?

  7. 7

    R에서 열의 데이터를 바꾸는 방법은 무엇입니까?

  8. 8

    powershell에서 두 번째 문자를 바꾸는 방법은 무엇입니까?

  9. 9

    gtext (R / gWidgets)에서 텍스트를 바꾸는 방법은 무엇입니까?

  10. 10

    정규식에서 텍스트를 바꾸는 방법은 무엇입니까?

  11. 11

    TextView에서 부분 텍스트를 바꾸는 방법은 무엇입니까?

  12. 12

    Android에서 특수 문자를 바꾸는 방법은 무엇입니까?

  13. 13

    OSX에서 왼쪽 하단 키를 바꾸는 방법은 무엇입니까?

  14. 14

    Android에서 문자를 바꾸는 방법은 무엇입니까?

  15. 15

    SwiftUI에서 ResearchKit 모달보기를 닫는 방법은 무엇입니까?

  16. 16

    SwiftUI에서 그리드보기를 만드는 방법은 무엇입니까?

  17. 17

    Lenovo 외장 키보드에서 제어 및 기능 키를 바꾸는 방법은 무엇입니까?

  18. 18

    SAS에서 현재 단계를 기록하는 방법은 무엇입니까?

  19. 19

    '\ n'을 유지하면서 '\'를 바꾸는 방법은 무엇입니까?

  20. 20

    문자열 이름의 순서를 바꾸는 방법은 무엇입니까?

  21. 21

    페이지의 시간 순서를 바꾸는 방법은 무엇입니까?

  22. 22

    모든 화면에서 현재 Firebase 사용자를 확보하는 올바른 방법은 무엇입니까?

  23. 23

    C #의 문자열에서 "찾기, 바꾸기, 다음"을 구현하는 방법은 무엇입니까?

  24. 24

    swiftui를 사용하는 위젯에서 현재 위치를 얻는 방법은 무엇입니까?

  25. 25

    Ubuntu16.04 / Gnome : 키보드에서 AltGr과 Ctrl을 바로 바꾸는 방법은 무엇입니까?

  26. 26

    Ubuntu16.04 / Gnome : 키보드에서 AltGr과 Ctrl을 바로 바꾸는 방법은 무엇입니까?

  27. 27

    한 키보드에서 ALT와 Windows 키를 바꾸는 방법은 무엇입니까?

  28. 28

    sed에서 더하기 기호를 공백으로 바꾸는 방법은 무엇입니까?

  29. 29

    SwiftUI에서 (다른) 크기 제한보기로보기를 마스킹하는 방법은 무엇입니까?

뜨겁다태그

보관