【问题标题】:SwiftUI: Toggle control is changing its locationSwiftUI:切换控件正在更改其位置
【发布时间】:2020-05-01 08:19:09
【问题描述】:

我有一个非常简单的表单,我在列表中列出了 CommentViewControl。

struct CommentViewControl: View {

    var body: some View {
        HStack {
            AnsweredBar(question.IsAnswered)
                .frame(width: 5)
                .offset(x: -10)
            Text("Any Text")
                .font(.caption)
                .fontWeight(.light)
                .frame(width: CGFloat(50 * UIScreen.main.bounds.width/100),
                       alignment: .leading)
                .background(Color.orange)
                .offset(x: -16)
            Spacer()
            Toggle(isOn: $toggleControl) {
                Text("")
            }
        }
    }
}

问题是每行的切换控件的位置是随机变化的。

什么会导致这种随机位置问题。我有多个选项卡,当我更改选项卡并返回上一个选项卡时;其他一些切换改变了它的位置。这是非常不一致的。见下图。

【问题讨论】:

  • 您的代码似乎不完整,toggleControl 是什么?它没有在任何地方定义。您能否也包括使用 CommentViewControl 的视图?
  • .labelsHidden() 添加到Toggle 会发生什么?即Toggle("", isOn: $toggleControl).labelsHidden()
  • 我试着把代码的概要。我想我错误地删除了 toggleControl State 变量。
  • labelsHidden() 没有帮助,但在添加 .id(UUID().uuidString) 后界面非常好。

标签: ios swift swiftui xcode11 swift5


【解决方案1】:

看起来像是更新或缓存问题...尝试以下操作

Toggle(isOn: $toggleControl)
{
    Text("")
}.id(UUID().uuidString)

【讨论】:

  • 这非常有效。但是这里的逻辑是什么。它有什么帮助?
  • 列表兑现其行,但更改“.id”明确表明内容是新的,需要重绘。
猜你喜欢
  • 1970-01-01
  • 2020-06-13
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多