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 显示一些工具栏按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何只为 iPhone X 在顶部添加额外的高度?

如何在 SwiftUI 列表中显示 MPMediaItem 图稿?

如何使用 SwiftUI 在 iOS 上获取和显示联系人照片?

SwiftUI / iOS / iPhone如何在存储之前加密数据/图像以及在哪里/如何在本地存储,一般最佳实践?

SwiftUI:状态栏颜色

如何在启动时显示 NavigationView (SwiftUI) 的详细视图