SwiftUI:如何只为 iPhone 显示一些工具栏按钮

Posted

技术标签:

【中文标题】SwiftUI:如何只为 iPhone 显示一些工具栏按钮【英文标题】:SwiftUI: How to show some toolbar buttons only for iPhone 【发布时间】:2021-05-10 17:58:11 【问题描述】:

我有一组工具栏按钮,只有在设备是 iPhone(而不是 iPad)时才会显示。

以下代码因此错误而失败:

包含控制流语句的闭包不能与结果生成器“ToolbarContentBuilder”一起使用

我明白它为什么会失败,但我无法想出一个解决方案来满足我的需要。

import SwiftUI

struct ContentView: View 
    var body: some View 
        NavigationView 
            List 
                NavigationLink(
                    destination: Hello(),
                    label: 
                        Text("Hello")
                    )
            
        
    


struct Hello: View 
    var body: some View 
        Text("Hello World")
            .toolbar() 
                if UIDevice.current.userInterfaceIdiom == .phone 
                    ToolbarItem(placement: .navigationBarTrailing) 
                        Button(action: 
                            // do something
                        , label: 
                            Text("Button1")
                        )
                    
                    ToolbarItem(placement: .navigationBarTrailing) 
                        Button(action: 
                            // do something
                        , label: 
                            Text("Button2")
                        )
                    
                
                ToolbarItem(placement: .navigationBarTrailing) 
                    Button(action: 
                        // do something
                    , label: 
                        Text("Button3")
                    )
                
            
    


struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        ContentView()
    

我很高兴创建一个单独的函数来实现它。我根本不知道该怎么做。

【问题讨论】:

【参考方案1】:

也许你想要这个

struct Hello: View 
    var body: some View 
        Text("Hello World")
            .toolbar() 
                ToolbarItemGroup(placement: .navigationBarTrailing) 
                    if UIDevice.current.userInterfaceIdiom == .phone 
                        Button(action: 
                            // do something
                        , label: 
                            Text("Button1")
                        )
                        Button(action: 
                            // do something
                        , label: 
                            Text("Button2")
                        )
                    
                    Button(action: 
                        // do something
                    , label: 
                        Text("Button3")
                    )
                
            
    

【讨论】:

以上是关于SwiftUI:如何只为 iPhone 显示一些工具栏按钮的主要内容,如果未能解决你的问题,请参考以下文章