【发布时间】:2020-07-05 10:44:56
【问题描述】:
我对整个 SwiftUI 概念仍然是全新的,与其他(或称它们为旧的)编程风格相比,我发现它相当困难。我知道这听起来可能很傻,但我仍然没有掌握如何使用函数的概念。在大多数教程中,他们使用大量结构和计算属性,而函数显然不多(但为什么呢?)。虽然我可以设计漂亮的应用程序,而且 SwiftUI 与普通的 Swift / UIKit 相比是如此简单,但我不明白如何用有意义的代码填充我的应用程序,以便它们真正做一些事情。
好的,这里是一些带有函数的示例代码。这是正确的方法还是我应该使用结构或其他东西?
此代码允许用户输入一个数字,当按下按钮时,数字会添加“5”,结果会显示在 TextField 上方。没什么特别的,但我的问题是有人会使用这样的函数,还是有更好的方法来使用 SwiftUI?
struct ContentView: View {
@State private var result: String = "0"
@State private var number: String = ""
var body: some View {
VStack(alignment: .leading) {
Text("Result:")
.font(.title)
.fontWeight(.bold)
Text(String(result)).padding()
Text("Enter a number:")
.font(.title)
.fontWeight(.bold)
TextField("Enter a number", text: $number)
.textFieldStyle(RoundedBorderTextFieldStyle())
.keyboardType(.numberPad)
Button("Add 5") {
result = AddFive()
}
.frame(minWidth: 0, maxWidth: .infinity)
.padding()
.foregroundColor(.white)
.background(Color.red)
.cornerRadius(40)
.padding(.horizontal, 20)
}
.padding()
}
func AddFive() -> String {
let num = Int(number) ?? 0
let result = num + 5
return String(result)
}
}
当然,在这种情况下我可以使用计算属性,但我正在考虑更复杂的代码。在 Swift 中,我只是将一个函数叠加在另一个函数之上。
【问题讨论】:
-
我认为大多数时候你会从一个事件中触发一个动作,比如按钮动作,onAppear。您可以直接在 Button 操作中执行命令,也可以像上面那样将代码外包给一个函数。大多数都是关于修改类/结构数据或更改状态/绑定。许多不同的方法,但请确保您上面的方法可以正常工作。
-
当您的应用程序增长时,您开始使用 func/struct。加入一些网络以进行更深入的讨论。
标签: swift function struct swiftui