首页 > 解决方案 > Swift / SwiftUI:为什么我不能覆盖返回某些视图的方法?

问题描述

在下面的例子中

import SwiftUI

class AbstractOverride {
    open func configurationView() -> AnyView {
        if Features.TEST_VERSION {
            return AnyView(Text("override configurationView()"))
        } else {
            return AnyView(EmptyView())
        }
    }
    
    open func someConfigurationView() -> some View {
        if Features.TEST_VERSION {
            return AnyView(Text("override someConfigurationView()"))
        } else {
            return AnyView(EmptyView())
        }
    }

}

class SubclassOverride: AbstractOverride {
    override func configurationView() -> AnyView { // no compiler error
        return AnyView(Text("Test"))
    }

    override func someConfigurationView() -> some View { // compiler error "Method does not override any method from its superclass"
        return AnyView(Text("Test"))
    }
}

compiler error "Method does not override any method from its superclass"override func someConfigurationView() -> some View.

没有编译器错误返回AnyView

谁能解释这里发生了什么?为什么 Swift 不承认方法签名是相同的?

这是 iOS 13,Xcode 11.5

标签: swiftswiftuioverriding

解决方案


推荐阅读