小编Muf*_*497的帖子

通过协议继承的 SwiftUI 可重用视图

目标

我的目标是制作一个可重用的视图协议,它继承 SwiftUI View 协议并提供一些默认功能,用于根据视图内容的状态加载显示不同的视图。

这样,我不必为我创建的每个视图重写相同的代码,并使代码更清晰。

问题

我制作了一个“DelayedContentView”协议,它根据视图内容是否已加载来显示两个不同的视图主体。当我尝试实施它时,问题就出现了。“loadedBody”和“unloadedBody”属性不能是“some View”类型,即使它们与 SwiftUI View 的 Body AssociatedType 类型相同。

背景

我的应用程序中有各种远程获取数据的视图。每个视图显示两个视图主体:一个用于获取内容时的视图主体,另一个用于获取完成时的视图主体。

Apple 的 SwiftUI 视图协议

public protocol View {

    associatedtype Body : View

    var body: Self.Body { get }
}
Run Code Online (Sandbox Code Playgroud)

我的观点协议

protocol DelayedContentView:View {
    
    func contentLoaded() -> Bool
    
    var loadedBody: Self.Body { get }
    
    var unloadedBody: Self.Body { get }
    
}


extension DelayedContentView {
    
    //Default implementation that I won't have to rewrite for each view.
    var body: some View {
        if contentLoaded() {
            return …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

3
推荐指数
1
解决办法
4630
查看次数

SpriteKit游戏逻辑

我正在创建一个基于关卡的游戏,使用两个SKSpriteNodes作为按钮进入下一个或上一个级别,这将导致GameViewController呈现一个新场景.我让SKScene有一个直接引用gameviewController的属性,以便调用一个现在的新场景函数,但据我所知,这打破了MVC模型.这不好吗?有什么选择?

sprite-kit swift

1
推荐指数
1
解决办法
245
查看次数

标签 统计

swift ×2

sprite-kit ×1

swiftui ×1