【发布时间】:2020-02-04 06:15:57
【问题描述】:
在我现有的应用程序中,所有视图控制器上的 UI 配置很少,例如设置自定义导航栏、设置全屏背景图像等等。为此,在viewWillAppear 的基本视图控制器中进行配置,所有视图控制器都继承自它。因此,无需在子视图控制器中执行任何操作即可进行配置
如何使用 SwiftUI 实现类似的实现?
SwiftUI 在 View 上提供了 onAppear() 和 onDisappear() 方法,它是 Struct,不支持继承。如果我制作扩展方法或协议,我必须从所有视图中调用方法。
感谢任何帮助...
【问题讨论】:
-
在 SwiftUI 中,您不应该考虑继承。请改用 composition。
-
@Sweeper 我同意你的看法。但最后,我们需要可重用的解决方案。您能否提供一些示例,如何使用组合解决上述问题?
-
改变设计没有万能的解决方案。根据您所说,设置导航栏、设置背景图像等操作都应在
body属性中完成。创建一个执行这些操作的视图,但它的初始化程序需要viewBuilder以允许您传递不同的内容。这有点像Button的工作原理。