Ios SwiftUI中的导航工具

Ios SwiftUI中的导航工具,ios,swift,swiftui,xcode11,Ios,Swift,Swiftui,Xcode11,我想知道如何在SwiftUI中使用导航栏 我想把BarButtonItem和图像放在NavigationBar 我已经能够显示导航栏并放置标题 您应该使用.navigationBarItems()修饰符。例如,您可以像这样添加按钮或图像: .navigationBarItems( leading: Button("Title") { // Actions }, trailing: Button(action: { // A

我想知道如何在SwiftUI中使用导航栏

我想把
BarButtonItem
和图像放在
NavigationBar

我已经能够显示导航栏并放置标题


您应该使用
.navigationBarItems()
修饰符。例如,您可以像这样添加
按钮
图像

.navigationBarItems(
    leading: Button("Title") {
         // Actions
    },

    trailing: Button(action: {
    // Actions
    }, label: { Image("Icon") })
)
.navigationBarItems(
      leading: NavigationButtonItem(),
      trailing: NavigationImageItem()
)
注: 您可以在那里查看任何
。(不仅仅是一个
按钮

提示

可以将每个项封装在结构中:

struct NavigationButtonItem: View {
    var body: some View {
        Button("Title") {
           // Actions
        }
    }
}

struct NavigationImageItem: View {
    var body: some View {
        Button(action: {
            // Actions
        }, label: { Image("Icon") })
    }
}
用户可以这样使用它们:

.navigationBarItems(
    leading: Button("Title") {
         // Actions
    },

    trailing: Button(action: {
    // Actions
    }, label: { Image("Icon") })
)
.navigationBarItems(
      leading: NavigationButtonItem(),
      trailing: NavigationImageItem()
)
.navigationBarItems()
是您正在寻找的函数。可以指定前导视图、尾随视图或两者。在视图中,可以指定水平和垂直堆栈以添加其他按钮


将此从parentViewController放置

NavigationLink(destination: NotesListView())
迅捷2 在SwiftUI 2/iOS 14中,
navigationBarItems
修饰符已被弃用

相反,我们应该使用带有s的工具栏


您可以查看更多
工具栏ItemPlacement
s.

在正常的swift书写中,有一个.edit按钮可用于创建编辑按钮并为您执行大多数操作。SwiftUI中有类似的功能吗?是的,
EditButton()
@Yuto@MojtabaHosseini我正在跟踪您的代码,并尝试添加UIBarButton,例如,.navigationBarTitle(((task.label)”).navigationBarItems(trailing:NavigationButtonItem()),但我无法在按钮上添加操作。你能告诉我可能的问题是什么吗?
NavigationView {
    List {
        // ...
    }
    .navigationTitle("Notes")
    .toolbar {
        ToolbarItem(placement: .navigationBarLeading) {
            Button("Tap me") {
                // action
            }
        }
        ToolbarItem(placement: .navigationBarTrailing) {
            Image(systemName: "plus")
        }
    }
}