Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftUI如何在UIBarButtonItem上添加操作?_Ios_Swift_Uinavigationbar_Swiftui_Uinavigationitem - Fatal编程技术网

Ios SwiftUI如何在UIBarButtonItem上添加操作?

Ios SwiftUI如何在UIBarButtonItem上添加操作?,ios,swift,uinavigationbar,swiftui,uinavigationitem,Ios,Swift,Uinavigationbar,Swiftui,Uinavigationitem,我使用的是SwiftUI,我在导航栏中添加了按钮,但我无法设置该按钮的操作。我尝试了这两种方法,但都失败了 方法:1 .navigationBarTitle("\(task.label)") .navigationBarItems(trailing: UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.actionName))) 但我这里有个错误 参数类型“uiBarButtoni

我使用的是SwiftUI,我在导航栏中添加了按钮,但我无法设置该按钮的操作。我尝试了这两种方法,但都失败了

方法:1

.navigationBarTitle("\(task.label)")
.navigationBarItems(trailing: UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.actionName)))
但我这里有个错误

参数类型“uiBarButtonim”与预期类型不符 “视图”

方法:2

.navigationBarTitle("\(task.label)")
.navigationBarItems(trailing: NavigationBarButtonItem())

struct NavigationBarButtonItem : View {
    var body : some View {
        Button(action: {
            print("Button Tapped")
        }, label: {Text("Done")})
    }
}
在这里,这个打印语句永远不会运行,尽管导航栏右侧显示“完成”按钮,但操作永远不会工作

.navigationBarItems(尾随:UIBarButtonItem(

上述内容绝对不正确-您试图传递UIKit对象,而不是预期的视图结构

下面的一个肯定有效(使用Xcode 11.2+测试)

那么,复制粘贴“原样”的方法2中的代码也可以工作,所以原因可能不在这段代码中

它并没有提供您所有的代码,但我可以假设您将其放置在
导航视图
之外,但doc说:

NavigationView {
    // ... some view is here
    .navigationBarItems(trailing: Button("Done") { 
       print("Done something")
    })
}
/// This modifier only takes effect when this view is inside of and visible
/// within a `NavigationView`.