如何为每个设备创建另一个独特的视图?

Posted

技术标签:

【中文标题】如何为每个设备创建另一个独特的视图?【英文标题】:How do I create another unique view for each device? 【发布时间】:2021-10-22 04:29:34 【问题描述】:

当用户选择设备时如何创建另一个视图?对于每个设备,视图不会相同,因为给出的信息不会相同(自定义视图) 谢谢你让我走上正轨。

Canvas image

struct ContentView: View 
var body: some View 
    NavigationView 
    List(ios, children: \.sousMenuIos)  item in
        HStack 
            Image(item.image)
                .resizable()
                .scaledToFit()
                .frame(width: 60, height: 60)
            Text(item.name)
                .font(.system(.title3, design: .rounded))
                .bold()
        
  
    .navigationTitle("Jailbreak")
   
  
 
struct ContentView_Previews: PreviewProvider 
static var previews: some View 
    ContentView()

【问题讨论】:

这有帮助吗? SwiftUI Navigation View - Handling Size Classes over multiple views. 不清楚你在问什么,这也不是一个可运行代码的最小示例。 但是,我觉得这很清楚。我只想为列表中的每个设备打开一个特定视图 @GuillaumeCombot 哦,您的意思是导航到新视图(其中可能包含有关设备的更多信息)?如果是这样,您可能正在寻找NavigationLink顺便说一句:回复时使用@...,以便我收到通知 只需在项目导航器中选择文件目标即可。您可以调用特定文件/查看相同的内容,Xcode 将根据可用于目标的文件选择正确的文件 【参考方案1】:

您需要将列表标签包装在 NavigationLink 中,并将项目传递给您想要的服装视图。这是一个带有虚拟数据的工作示例。

struct ListItems: View 
var body: some View 
    NavigationView 
        List(iOS.previewData)  item in
            NavigationLink(destination: CostumView(text: item.name))
                HStack 
                    Image(systemName: item.image)
                        .resizable()
                        .scaledToFit()
                        .frame(width: 60, height: 60)
                    Text(item.name)
                        .font(.system(.title3, design: .rounded))
                        .bold()
                
            
  
    .navigationTitle("Jailbreak")
   
  
 
struct CostumView: View 
    var text: String
    var body: some View
        Text(text)
    


struct ListItems_Previews: PreviewProvider 
    static var previews: some View 
        ListItems()
    


struct iOS: Identifiable 
    var id = UUID()
    var image: String = ""
    var name: String
    
    static let previewData = [
    iOS(image: "phone", name: "iPhone 8"),
    iOS(image: "phone", name: "iPhone X")
    ]

【讨论】:

以上是关于如何为每个设备创建另一个独特的视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何为我在回收站视图中的卡片视图中的每个项目创建一个点击监听器

如何为数组中的每个创建一个具有唯一图像和选择器的自定义 UIButton?

在 SQL 中,如何为另一列的每个不同值创建新的值列?

如何为用户输入文本时将动态创建的每个单元格设置按钮操作(Swift 4)?

如何为 UITableView 中的每个单元格类别指定特定的部分名称

如何为 iOS 应用创建自定义容器视图?