首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SwiftUI元素在视图之间向下移动

SwiftUI元素在视图之间向下移动
EN

Stack Overflow用户
提问于 2021-10-15 09:56:59
回答 2查看 194关注 0票数 0

我有两种观点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    import SwiftUI
import CoreData

struct ContentView: View {
    var body: some View {
        NavigationView {
            VStack {
                Image("qr-code")
                    .resizable()
                    .scaledToFit()
                    .position(x: 100, y: 100)
                    .offset(x: 100)
                Text("Thank you")
                    .position(x: 200)
            }.toolbar{
                ToolbarItemGroup(placement: .bottomBar) {
                    NavigationLink(destination: ContentView().navigationBarBackButtonHidden(true)) {
                        Text("Show QR")
                    }
                    Spacer()
                    NavigationLink(destination: CustomizeView().navigationBarBackButtonHidden(true)) {
                        Text("Customize")
                    }

                }
            }
        }
    }
}

struct CustomizeView: View {
    var body: some View {
            List {
                Section(header: Text("Important tasks")) {
                    Text("Task data goes here")
                    Text("Task data goes here")
                }
            }.toolbar{
                ToolbarItemGroup(placement: .bottomBar) {
                    NavigationLink(destination: ContentView().navigationBarBackButtonHidden(true)) {
                        Text("Show QR")
                    }
                    Spacer()
                    NavigationLink(destination: CustomizeView().navigationBarBackButtonHidden(true)) {
                        Text("Customize")
                    }
                }
            }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            ContentView().environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
        
            CustomizeView().environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
            
        }
    }
}

当我单击“自定义”和“显示”时,我看到图片向下移动。这是预期的行为吗?如何确保所有元素都处于相同的位置,而不管我单击了多少nvaigation按钮?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-15 10:02:01

您的视图层次结构中应该只有一个NavigationView

现在,NavigationViewContentViewCustomizeView中都有,当您使用NavigationLink导航到任何一个时,它都会向视图中添加一个额外的导航栏,从而向下推下内容。

要解决这个问题,您的根视图可以是NavigationView,然后链接可以导航到不包含其他NavigationView的视图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct ContentView: View {
    var body: some View {
        NavigationView {
            BasicView()
        }
    }
}

struct BasicView : View {
    var body: some View {
        VStack {
            Image(systemName: "pencil")
                .resizable()
                .scaledToFit()
                .position(x: 100, y: 100)
                .offset(x: 100)
            Text("Thank you")
                .position(x: 200)
        }.toolbar{
            ToolbarItemGroup(placement: .bottomBar) {
                NavigationLink(destination: BasicView().navigationBarBackButtonHidden(true)) {
                    Text("Show QR")
                }
                Spacer()
                NavigationLink(destination: CustomizeView().navigationBarBackButtonHidden(true)) {
                    Text("Customize")
                }

            }
        }
    }
}

struct CustomizeView: View {
    var body: some View {
            List {
                Section(header: Text("Important tasks")) {
                    Text("Task data goes here")
                    Text("Task data goes here")
                }
            }.toolbar{
                ToolbarItemGroup(placement: .bottomBar) {
                    NavigationLink(destination: BasicView().navigationBarBackButtonHidden(true)) {
                        Text("Show QR")
                    }
                    Spacer()
                    NavigationLink(destination: CustomizeView().navigationBarBackButtonHidden(true)) {
                        Text("Customize")
                    }
                }
            }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-10-15 10:31:42

问题是,我认为您已经从一个ContentView调用了另一个ContentView。这就是为什么再添加一个导航栏并将其移动。

您可以创建另一个名为QRShowView的视图,并将qr图像放置在那里,并且您已经拥有了CustomizeView视图。在ContentView中添加两个按钮,比如显示按钮或自定义按钮。

然后在单击时调用相应的视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69588815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文