我正在将我的一个 Swift 项目转换为 SwiftUI。我需要将委托和协议转换为 SwiftUI,SwiftUI 允许吗?或者有什么替代方法吗?请帮助我,我对 SwiftUI 很困惑。
我从我的一个类中调用委托方法,然后委托方法将出现在另一个 ViewController 中。
//PresenterClass
protocol SplashPresenterDelegate {
func didFetchedSystemInfo(info: String)
}
class SplashPresenter: NSObject {
var delegate: SplashPresenterDelegate?
func getSystemInfo(){
self.delegate?.didFetchedSystemInfo(info: "ResponseString")
}
}
// Viewcontroller class
class myViewController: UIViewController {
.
.
.
}
extension myViewController: SplashPresenterDelegate{
func didFetchedSystemInfo(info: String){
print("delegate called")
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我将此代码转换为 SwiftUI
通常,SwiftUI 更喜欢采用回调而不是协议/委托的模式。例如, an 中的每个按钮ActionSheet都有一个在点击按钮时执行的闭包。
不过,您不应该直接转换代码。SwiftUI 是声明性的,在很多事情上使用不同的范例。例如,您没有didFetchInfo方法,只需将其分配给 @Published 变量。
考虑一下“单一事实来源”,其中单个变量始终是正确的。例如,List只需获取一个数组并在数组更改时进行更新,这与通过和UITableView提供数据的情况不同。我对你的具体项目了解不够,无法提供更多细节,但这些都是需要考虑的事情。numberOfRowscellForRowAt
| 归档时间: |
|
| 查看次数: |
3596 次 |
| 最近记录: |