12

对于我的 SwiftUI 应用程序,我创建了一个简单的Title视图,它具有设置的字体大小和文本颜色。Title声明如下:

struct Title: View {
    var string: String
    
    var body: some View {
        Text(string)
            .font(.system(size: 32))
            .color(Color.black)
    }
}

我现在在内容视图的正文中有以下文本对象:

var body: some View {
    VStack(alignment: .leading) {
        Text("Welcome")
            .font(.largeTitle)
            .color(Color.black)
        Text("to SwiftUI")
            .font(.largeTitle)
            .color(Color.secondary)
    }
}

所以现在,我想Text用我的 s 替换这两个Titles:

var body: some View {
    VStack(alignment: .leading) {
        Title("Welcome")
        Title("to SwiftUI")
    }
}

替换视图后,我从 Xcode 收到一些看似无关的错误消息,这些错误消息会阻止应用程序编译:

静态成员“leading”不能用于“Horizo​​ntalAlignment”类型的实例

'(LocalizedStringKey) -> Text' 不能转换为 '(LocalizedStringKey, String?, Bundle?, StaticString?) -> Text'

“字体”不能转换为“字体?”

...和更多。恢复Text而不是Title“修复”问题。

有趣的是,我还有一个自定义PrimaryButton视图,我可以毫无问题地添加它:

struct PrimaryButton: View {
    var title: String
    
    var body: some View {
        Button(action: { print("tapped") }) {
            Text(title)
                .font(Font.primaryButton)
                .offset(y: 1)
                .padding(.horizontal, 20)
                .padding(.vertical, 14)
        }
    }
}

...然后使用它:

PrimaryButton(title: "Let's go")

问题

这只是一个测试版问题,还是我错过了什么?

4

3 回答 3

13

您需要添加string:到您的Title()初始化程序:

var body: some View {
    VStack(alignment: .leading) {
        Title(string: "Welcome")
        Title(string: "to SwiftUI")
    }
}

编译器错误目前具有误导性,并且不在真正问题所在的位置附近。

于 2019-06-06T07:48:55.860 回答
3

您缺少string:初始化程序中的参数。请在下面找到更新的代码:

var body: some View {
    VStack(alignment: .leading) {
        Title(string: "Welcome")
        Title(string: "to SwiftUI")
    }
}

仅供参考:
我创建了一个示例应用程序

// MARK - CustomView

struct ContentView : View {
    var body: some View {
        VStack{
            CustomView(aString: "First String")
            CustomView(aString: "Second String")
        }
    }
}

// MARK - CustomView

struct CustomView : View {
    var aString: String
    var body: some View {
        Text(aString)
    }
}
于 2019-06-06T09:25:31.990 回答
0

今天,01oct2019,Swift 提示我替换string: 为。verbatim:.

Text(verbatim: "Pressure")今天 Text(string: "Pressure")工作昨天确实工作,但今天不行。hth

于 2019-10-01T19:56:29.697 回答