【问题标题】:SwiftUI: Why can't I have more than one TextField in a single HStack?SwiftUI:为什么我不能在一个 HStack 中有多个 TextField?
【发布时间】:2020-07-27 22:23:36
【问题描述】:

我希望在 HStack 中的 iOS 应用程序上让两个可编辑的 TextField 并排放置。但是,每当我将它放入我的视图文件时,我都会收到一个错误(“静态成员 'leading' 不能用于类型 'Horizo​​ntalAlignment' 的实例”):

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

如果我在同一个 HStack 中有一个 TextField 和两个或多个 Text 项,也会发生这种情况。

关于为什么会发生这种情况的可能解决方案或原因? 如果我删除其中一个 TextField 或在同一个 HStack 中只有一个 TextField 和一个 Text 项,则应用程序运行顺利(无错误)。

使用 xcode11.4。

谢谢。

[编辑]

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)
            }
     }}}

【问题讨论】:

  • TextFieldHStack 中的浏览量并没有什么不好。这是编译器无法检测到错误位置的情况。您能提供完整的body 视图和Country 类型声明吗?
  • 一个 HStack 中可以有多个 TextField。向我们展示更多您的代码。从给定的 sn-p 看起来你缺少一个 }
  • 我已经编辑了原始帖子,添加了正文视图和国家类型声明(在我的代码文件中,所有冒号和括号以及缩进都是正确的)

标签: swift xcode swiftui xcode11 xcode11.4


【解决方案1】:

你没有提供 Country 类,所以我创建了一个。以下测试适用于 HStack 中的 TextFields 以及它之外

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)
            }
        }
    }
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多