SwiftUI - 带列表的段控制

Posted

技术标签:

【中文标题】SwiftUI - 带列表的段控制【英文标题】:SwiftUI - Segment Control with Lists 【发布时间】:2019-06-20 16:30:22 【问题描述】:

我正在尝试制作一个处理列表和/或 Vstack 的段控件

我可以使用文本制作分段控件,但不能使用列表


import SwiftUI

struct MaterialSegmentControl : View 
    @State private var MaterialType = 0

    var body: some View 

        NavigationView 

            VStack 
                SegmentedControl(selection: $MaterialType) 
                    Text("Style").tag(0)
                    Text("Text").tag(1)
                    Text("Arrange").tag(2)

                
                Text("Value: \(MaterialType)")


            
        
    


如何让段控件在列表和/或 Vstack 之间切换?

【问题讨论】:

当您使用一组正确编码的List() 元素时会发生什么?通过正确编码,我的意思是您可以让每个列表显示 outside SegmentedControl(). 您的意思是在不同的文件中创建列表,并指向SegmentedControl()?你介意分享一些你认为如何做的代码吗?对不起,但我是一个编码新手...... :) 对我来说,您似乎已经有了答案。我问了两件事,基于您有三个 Text() 视图正常工作。 (1) 您的List() 视图是否正常工作?如果您从等式中删除SegmentedControl() 并尝试显示单个列表,它是否有效? (2) 如果是这样,当您将内容嵌入 SegmentedControl 时会发生什么?在我看来,您不需要担心单独的文件(还)。最终你可能想把事情分解,这很容易做到。这是一个完全不同的问题。祝你好运! 【参考方案1】:

是的!这很简单。像这样的:

struct MaterialSegmentControl : View 
    @State private var MaterialType = 0

    var body: some View 

        NavigationView 

            VStack 
                SegmentedControl(selection: $MaterialType) 
                    Text("Style").tag(0)
                    Text("Text").tag(1)
                    Text("Arrange").tag(2)
                

                if MaterialType == 0 
                    List 
                        Text("Hi")
                        Text("\(MaterialType)")
                    
                 else if MaterialType == 1 
                    List 
                        Text("Beep")
                        Text("\(MaterialType)")
                    
                 else 
                    List 
                        Text("Boop")
                        Text("\(MaterialType)")
                    
                
            
        
    

【讨论】:

@piebie 如果我需要滚动视图中的分段控件,代码将如何更改?

以上是关于SwiftUI - 带列表的段控制的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 列表(List)中字符串末尾带数字导致排序不正确的解决

SwiftUI,列表行添加按钮

没有部分的 SwiftUI 主列表可滚动标题视图?

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?

滚动列表时 SwiftUI 崩溃

如何在 SwiftUI 列表中显示领域结果?