动态导航链接 SwiftUI Xcode

Posted

技术标签:

【中文标题】动态导航链接 SwiftUI Xcode【英文标题】:Dynamic NavigationLink SwiftUI Xcode 【发布时间】:2022-01-01 05:53:35 【问题描述】:

在我的 HomeView 中,我有 2 张卡片。我制作了两个新页面(AboutA 和 AboutB)来链接到每张卡片。 但是如果我点击这张卡片,我只能预览第一页,因为我不知道如何为每个卡片设置动态导航。这是在我的 HomeView 中:

ForEach(items)  item in
    NavigationLink(destination: AboutA()) 
    CardView(item: item)

对于卡,我创建“数据”:

struct Item: Identifiable 
    var id = UUID()
    var title: String
    var text: String
    var image: String

现在我需要帮助,在 HomeView 中要更改什么,以及在“数据”页面中要更改什么。

谢谢。

【问题讨论】:

欢迎来到 SO - 请使用 tour 并阅读 How to Ask 以改进、编辑和格式化您的问题。如果没有Minimal Reproducible Example,就无法帮助您进行故障排除。 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

你有两张卡片,你必须在另一个视图中显示它们的详细信息,你称之为关于。 由于它们的性质相似,我认为关于页面也非常相似甚至相等。也许关于视图对于两个视图来说都是一样的,所以最好的办法是创建一个动态的关于视图:

struct Item: Identifiable 
    var id = UUID()
    var title: String
    var text: String
    var image: String


struct ContentView: View 
    @State
    var items : [Item] = [Item(title: "A", text: "test text", image: "test image"), Item(title: "B", text: "test text", image: "test image")]
    
    var body: some View 
        NavigationView 
            ForEach(items)  item in
                NavigationLink(destination: AboutView(item : item)) 
                    Text(item.text)
                
            
        
    


struct AboutView : View 
    var item : Item
    var body : some View 
        Text(item.title)
    

因此,AboutView 对两张卡片具有相同的结构,但它会填充正确的数据。 您当然可以添加一些控件来了解是否是女巫卡,并在视图中进行编辑。

【讨论】:

【参考方案2】:

好的,我解决了链接卡到新页面的问题,但我遇到了新问题:)

struct HomeView: View 
@State var show = false
var body: some View 
    NavigationView 
        ScrollView 
            ScrollView(.horizontal, showsIndicators: false) 
                HStack
                    ForEach(items)  item in
                        NavigationLink(destination: AboutH()) 
                            CardView(item: items[0])
                            NavigationLink(destination: Parkovi()) 
                                CardView(item: items[1])
                                NavigationLink(destination: Rijeke()) 
                                    CardView(item: items[2])
                            
                        
                        
                    
                

现在我有 3 张卡片,它们是页面的链接,但是我在同一卡片的行中有树时间:(

有什么帮助吗? 谢谢。

【讨论】:

以上是关于动态导航链接 SwiftUI Xcode的主要内容,如果未能解决你的问题,请参考以下文章

文本字段点击正在关闭 SwiftUI 中的导航链接

导航链接在 SwiftUI 中只能使用一次

如何在 SwiftUI 中动态隐藏导航返回按钮

包含按钮的 SwiftUI 导航链接

SwiftUI 导航链接

SwiftUI:导航链接中的自定义标签显示为灰色