SwiftUI: Почему я не могу иметь более одного TextField в одном HStack? - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу, чтобы два редактируемых текстовых поля сидели рядом друг с другом в приложении iOS в HStack. Тем не менее, я получаю сообщение об ошибке («Stati c член« ведущий »не может использоваться в экземпляре типа« HorizontalAlignment »») всякий раз, когда я помещаю это в мой файл просмотра:

var body: some View {
    VStack(alignment: .leading) {
        ...
        VStack(alignment: .leading) {
            HStack {
                TextField("\(aCountry.populationTitle)", text: $aCountry.populationTitle)
                TextField("\(aCountry.population)", text: $aCountry.population)
        }...

Это также происходит, если У меня есть один TextField и два или более текстовых элемента в одном и том же HStack.

Возможное решение или причина того, почему это происходит? Если я удалю одно из TextFields или у меня будет только один TextField и один элемент Text в одном и том же HStack, приложение будет работать гладко (без ошибок).

Использование xcode11.4.

Спасибо.

[EDIT]

Тело для MasterView.swift:

struct DetailView: View {
@ObservedObject var aCountry: Country
var body: some View {
    VStack(alignment: .leading) {
        Image("\(aCountry.imageName)").resizable().frame(width: 200, height: 200)
        TextField("\(aCountry.name)", text: $aCountry.name)
            .font(.headline)
        TextField("\(aCountry.continent)", text: $aCountry.continent)
            .font(.subheadline)

        VStack(alignment: .leading) {
            HStack {
                TextField("Population:", text: $aCountry.populationTitle)
                TextField("\(aCountry.population)", text: $aCountry.population)
            }
     }}}

1 Ответ

0 голосов
/ 15 апреля 2020

вы не указали класс Country, поэтому я его создал. Следующий тест работает с TextFields в HStack и вне его

class Country: ObservableObject {
    @Published var name = "countryx"
    @Published var continent = "continentx"
    @Published var populationTitle = "populationTitlex"
    @Published var population = "populationx"
    @Published var imageName = "imageNamex"
}

struct ContentView: View {

@ObservedObject var aCountry: Country

var body: some View {
    VStack(alignment: .leading) {
        // Image("\(aCountry.imageName)").resizable().frame(width: 200, height: 200)
        TextField("\(aCountry.name)", text: $aCountry.name).font(.headline)
        TextField("\(aCountry.continent)", text: $aCountry.continent).font(.subheadline)
        VStack(alignment: .leading) {
            HStack {
                TextField("Population:", text: $aCountry.populationTitle)
                TextField("\(aCountry.population)", text: $aCountry.population)
            }
        }
    }
}
}
...