iOS 16中的底部工具栏 - SwiftUI

7
我希望能在SwiftUI中创建一个底部工具栏。 以下代码可在iOS 15上运行,但在iOS 16上无法显示工具栏。(如果更改放置位置则可以正常工作...)
Text("Content")
    .toolbar {
        ToolbarItemGroup(placement: .bottomBar) {
            Button("Greeting") { 
                print("Hello world!")
            }
        }
    }

截图

你有没有任何解决这个问题的方法?

谢谢!

3个回答

10

toolbar 取决于导航栏,因此您需要有一个 NavigationView/NavigationStack

https://developer.apple.com/documentation/swiftui/view/toolbar(content:)-5w0tj

struct ToolbarSolutionView: View {
    var body: some View {
        NavigationView{ //NavigationStack
            Text("Content")
            
                .toolbar {
                    ToolbarItemGroup(placement: .bottomBar) {
                        Button("Greeting") {
                            print("Hello world!")
                        }
                    }
                }
        }
    }
}

之前可以正常工作很可能是一个错误。

如果你不需要导航栏,你可以隐藏它。

//iOS 13+
.navigationBarHidden(true)

//iOS 16+
.toolbar(.hidden, for: .navigationBar)

1

对我来说,在iOS 16上,任何条件的bottomBar都不会显示,即使showTB == true

  .toolbar {
    ToolbarItem(placement: .bottomBar) {
      if showTB {
        Button("Delete") {
          print(234)
        }
      }
    }
  }

在 iOS 16.1 Beta 上进行测试,看起来问题已经被解决了。


1
可能我有类似的问题,但是我使用了2个工具栏项——.bottomBar.keyboard。当我在.bottomBar中使用条件语句时,.keyboard工具栏根本不显示。我发现导致这个问题的原因是:在NavigationView中它按预期工作,但在NavigationStack中不行。还没有在iOS 16.1上测试过。 - Ryba

1

我遇到了同样的问题。更新到iOS 16.1后,问题得以解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接