ScrollView中的“ if else”不会在SwiftUI中重新加载嵌入式视图

时间:2019-09-06 18:22:22

标签: swiftui

我在scrollView内有一个segmentedControl,并希望根据它显示不同的视图。出于某种原因,如果ScrollView位于其中,则不会重新加载视图;如果位于外部,则BitView将重新加载。

这有效

@State private var selectedIndex = 0

    var body: some View {
        NavigationView {
            if selectedIndex == 0 {
                ScrollView {
                    Standings.Championship.UI.SegmentedControl(selectedIndex: $selectedIndex).padding()
                    Standings.Drivers.List()
                }
                .navigationBarTitle(Text("Standings"))
            }
            else {
                ScrollView {
                    Standings.Championship.UI.SegmentedControl(selectedIndex: $selectedIndex).padding()
                    Standings.Teams.List()
                }
                .navigationBarTitle(Text("Standings"))
            }
        }
    }

这不起作用

@State private var selectedIndex = 0

    var body: some View {
        NavigationView {
            ScrollView {
                Standings.Championship.UI.SegmentedControl(selectedIndex: $selectedIndex).padding()
                if selectedIndex == 0 {
                    Standings.Drivers.List()
                }
                else {
                    Standings.Teams.List()
                }
            }.navigationBarTitle(Text("Standings"))
        }
    }

知道为什么吗?

更新(解决方案)

添加VStack有帮助。这有效:

VStack {
     if selectedIndex == 0 {
          Standings.Drivers.List()
          }
     else {
          Standings.Teams.List()
     }
}

0 个答案:

没有答案