我正在探索SwiftUI,并且能够创建Future<String> makeLoginRequest(String requestJson) async{
final uri = url;
final headers = {
'Content-Type': 'application/json',
"Accept": "application/json",
};
var response=await post(
uri,
headers:headers,
body: requestJson,
);
print("${response.body}");
return response.toString();
}
的子类。
子类包含Button
和image
属性,这使其成为可重用的组件。
但是我无法为title
类定义动态动作行为。
请参考下面的代码。
圆形按钮的子类:
Button
用法示例:
struct RoundButton: View {
var image: String
var title: String
var body: some View {
VStack {
Button(action: {
print("Button pressed")
}){
Image(image)
.renderingMode(Image.TemplateRenderingMode?.init(Image.TemplateRenderingMode.template))
}
.frame(width: 40, height: 40)
.background(Color.blue)
.cornerRadius(20)
.accentColor(.white)
Text(title)
.font(.footnote)
}
}
}
您将看到HStack(alignment: .center) {
Spacer(minLength: 50)
RoundButton(image: "chat", title: "message")
Spacer()
RoundButton(image: "call", title: "call")
Spacer()
RoundButton(image: "video", title: "video")
Spacer()
RoundButton(image: "mail", title: "mail")
Spacer(minLength: 50)
}
块在此处打印一条消息。
我想知道如何为按钮的动作事件传递函数?
答案 0 :(得分:2)
按钮更新...
struct RoundButton: View {
var image: String
var title: String
var action: () -> Void
var body: some View {
VStack {
Button(action: action){
Image(image)
.renderingMode(Image.TemplateRenderingMode?.init(Image.TemplateRenderingMode.template))
}
...
用法更新...
RoundButton(image: "chat", title: "message") {
print("Button pressed")
}