Xcode 11的问题-“ INT无法转换为CGFloat吗?”

时间:2019-11-01 05:56:21

标签: swiftui xcode11

请在下面查看我的代码。我尝试了几件事,但似乎无济于事。我注意到的一件事是,如果我注释掉第28行,代码可以正常工作,但是如果我保持第28行不变,那么我会不断收到错误消息。

我尝试将其更改为:

HStack(alignment:.center, spacing: CGFloat(50))                                        

但是这也不起作用。请帮忙 预先感谢您抽出宝贵的时间对此进行研究。

//
//  ContentView.swift
//  UdemyCourse
//
//  Created by Karan Singh on 10/29/19.
//  Copyright © 2019 Karan Singh. All rights reserved.
//

import SwiftUI

struct ContentView: View {

    @State var text: String = ""

    var body: some View {
        VStack{
            HStack(alignment:.center, spacing: CGFloat(50)) {
                Image("Karan").resizable().frame(width: 100, height: 120, alignment: .center)

            VStack{
                Text(verbatim: "Karan Singh").font(.title).foregroundColor(.black).bold()
                Text(verbatim: "Customer Success")
            }
        }

            Divider()

            TextField($text, placeholder: Text(verbatim: "Enter Text"))

            ButtonView(title: "Login", clickAction: {
                print("Click to Login")
})

//struct ContentView_Previews: PreviewProvider {
//    static var previews: some View {
//        ContentView()
//    }
//}
          }
    }
}

1 个答案:

答案 0 :(得分:0)

您应该注意,Xcode会抱怨错误位置的错误,因此您收到的错误可能与实际错误无关。


查看您的代码似乎有一些错误。除非您为TextFieldButtonView编写了自己的组件(如果已编写,则应在代码示例中包含它们),否则错误似乎就在于它们。

首先TextField,它以最简单的形式采用以下参数:

TextField(<title: StringProtocol>, text: Binding<String>)

与您编写的内容不同(我也找不到与您提供的重载匹配的TextField)。因此,您应该将TextField更新为:

TextField("Enter text", text: $text)

第二,没有名为ButtonView的组件,因此我认为您的意思是使用Button。它的参数是:

Button(action: () -> Void, label: () -> _)

因此,您应该将Button更新为:

Button(action: {
    print("Click to login")
}) {
    Text(verbatim: "Login")
}

如果我们将它们放在一起(将图像替换为名为image的系统,因为我没有您的照片),我们将得到以下内容,它们可以正确编译:

struct ContentView: View {

    @State var text: String = ""

    var body: some View {
        VStack {
            HStack(alignment: VerticalAlignment.center, spacing: 50) {
                Image(systemName: "person.fill")
                    .resizable()
                    .frame(width: 100, height: 100, alignment: .center)

                VStack {
                    Text(verbatim: "Karan Singh")
                        .font(.title)
                        .foregroundColor(.black)
                        .bold()
                    Text(verbatim: "Customer Success")
                }

                Divider()

                TextField("Enter text", text: $text)


                Button(action: {
                    print("Click to login")
                }) {
                    Text(verbatim: "Login")
                }

            }
        }
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

请注意:ContentView_Previews应该在您的ContentView结构之外。