有没有办法“子类化”修饰符?
Posted
技术标签:
【中文标题】有没有办法“子类化”修饰符?【英文标题】:Is there a way to "subclass" a modifier? 【发布时间】:2020-11-13 17:42:03 【问题描述】:我正在使用 SwiftUI 开发应用程序。我的第一个。
此应用使用.sheet()
、.actionSheet()
和.alert()
,但这些修饰符的名称非常通用。
假设我使用.sheet()
显示表单,.actionSheet()
显示菜单,.alert()
显示错误消息。我必须不断记住每个人的功能。
最好将它们从 .sheet()
、.actionSheet()
和 .alert()
转换为 .showForm()
、.showMenu()
和 .showMessages()
是否可以“子类化”.sheet()
、.actionSheet()
和 .alert()
,给它们自定义名称?
【问题讨论】:
您想要相同的功能但使用新名称吗? 是的,这样更容易理解每个人的职责。 【参考方案1】:这是一个使用自定义扩展包装所需视图的可能方法的演示。
使用 Xcode 12.1 / ios 14.1 测试
extension View
func showForm<Content: View>(isActive: Binding<Bool>, @ViewBuilder content: @escaping () -> Content) -> some View
self.sheet(isPresented: isActive, content:
Form content()
)
struct DemoShowForm: View
@State private var isActive = false
var body: some View
Button("Demo") self.isActive = true
.showForm(isActive: $isActive)
Button("Close") self.isActive = false
【讨论】:
以上是关于有没有办法“子类化”修饰符?的主要内容,如果未能解决你的问题,请参考以下文章