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

问题描述 投票:0回答:1

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

我尝试将其更改为:HStack(alignment:.center,间距: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()
//    }
//}
          }
    }
}
swiftui xcode11
1个回答
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结构之外。

© www.soinside.com 2019 - 2024. All rights reserved.