swift 有没有办法将函数作为可选参数传递到视图中?

wxclj1h5  于 2023-01-12  发布在  Swift
关注(0)|答案(2)|浏览(122)

我正在SwiftUI中制作一个应用程序,涉及回答是或否的问题。因此,我创建了一个名为YesOrNoView的子视图。这个子视图有两个按钮,一个标记为yes,另一个标记为no。该视图接受question的绑定变量,该变量根据用户的答案返回true或false。它还接受questionsAnswered的绑定变量,并在按下任一按钮时递增该变量。这个行为适用于游戏中的大多数问题,但对于最后一个问题,我希望它执行自定义逻辑,将用户带到一个不同的视图。为此,我尝试使视图接受一个自定义操作/方法,我可以从任何按钮操作逻辑调用。理想情况下,这个动作也是可选的,这样我就不用在99%的时间里,不使用它了。

    • 如何将函数作为可选参数传递到视图中,然后在按下所述视图中的按钮时运行该操作?**

我尝试使用添加操作

struct YesOrNoView<Content: Action>: View {

...但在其作用域中找不到Action或Action。
我还试着用

struct YesOrNoView<Content>: View {

但是我得到一个错误,说不能推断Content变量类型。
任何帮助都将不胜感激。

myzjeezk

myzjeezk1#

它将clickAction返回到视图

struct GenericButton<Title: StringProtocol>: View {

    let title: Title
    let action: () -> Void

    var body: some View {
        Button(action: action) {
                Text(title)
            }.frame(width: 200, height: 40)
        }
    }
}

用法:

GenericButton("Button") {
// Button tapped action
}
ao218c7q

ao218c7q2#

我在@JoakimDanielson的帮助下设法弄明白了。诀窍是传入一个空函数作为默认值。

var myFunction: () -> Void = {}

谢谢大家的帮助。

相关问题