Проблемы с Xcode 11 - "INT не конвертируется в CGFloat?" - PullRequest
0 голосов
/ 01 ноября 2019

Пожалуйста, смотрите мой код ниже. Я попробовал несколько вещей, но ничего не помогло. Единственное, что я заметил, это то, что если я закомментирую строку № 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 голосов
/ 01 ноября 2019

Вы должны заметить, что XCode будет жаловаться на ошибки в неправильном месте, поэтому полученная вами ошибка может не иметь ничего общего с тем, что на самом деле неправильно.


Глядя на ваш код, кажется, есть пара ошибок. Если вы не написали свои собственные компоненты для TextField и ButtonView (которые вы должны были включить в свой пример кода, если бы вы это сделали), то ошибка, по-видимому, с ними.

Во-первых, 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 структуры.

...