繁体   English   中英

SwiftUI 列表中某些行的布局问题

[英]Problems with layout of some rows in SwiftUI list

我试图找到以前问过的类似问题,但失败了。

我有一个简单的列表视图。 我正在使用 ForEach 显示某个列表项的 10 次迭代以创建布局,然后再将实际数据添加到此列表中。 我有最后 2 行无法正确呈现的问题。 但有时它是另一排。 我也在 iPhone 上测试过,有时是一排,有时是另一排。 带有列表的视图的代码是这样的:

import SwiftUI

struct LocksView: View {

    @State private var locksPaid = 0

    var body: some View {
        NavigationView {
            List {
                DateView()
                    .listRowInsets(EdgeInsets())

                Picker(selection: $locksPaid, label: Text("Picker")) {
                    Text("All").tag(0)
                    Text("Not paid (2)").tag(1)
                }
                .pickerStyle(SegmentedPickerStyle())
                .padding(10)

                ForEach(0 ..< 10) {item in
                    LocksItemView()
                }

            }
            .navigationBarTitle(Text("Locks"))
            .navigationBarItems(trailing: EditButton())
        }
    }
}

列表项的代码是这样的:

import SwiftUI

struct LocksItemView: View {

    @State private var paid : Bool = false

    var body: some View {
        HStack {

            Text("L15")
                .font(.title)
                .fontWeight(.heavy)
                .multilineTextAlignment(.center)
                .frame(width: 80)

            VStack(alignment: .leading) {
                Text("nickname")
                    .fontWeight(.bold)
                Text("category")
                Text("4 000 THB")
                    .fontWeight(.bold)
            }

            Spacer()

            Toggle(isOn: self.$paid) {
                Text("Paid")
            }
            .labelsHidden()
        }
    }
}

为什么切换在我的列表中的某些行中断开? 为什么会向左移动?

在此处输入图像描述

这不是最后的项目。 如果您将ForEach设置为 20 而不是 10 并上下滚动,您会看到更有趣的问题。

我假设原因,实际上是List错误,与本主题中的相同。

解决方法如果它对您不重要,则使用ScrollView而不是List ,经测试,它没有错误。 否则,提交雷达并等待修复。

我首先在模拟器上尝试了你的代码,也遇到了同样的问题。 但后来我记得,13.2 iOS 存在一些问题,并尝试在我的设备上运行它(iPhone 7,iOS 13.1.1),一切正常。 我认为这是 13,2 iOS 中的问题。 不在列表中,有示例:我如何更改代码以证明一切正常:

import SwiftUI

struct LocksView: View {
    
    @State private var locksPaid = 0

    var body: some View {
        NavigationView {
            List {
                Picker(selection: $locksPaid, label: Text("Picker")) {
                    Text("All").tag(0)
                    Text("Not paid (2)").tag(1)
                }
                .pickerStyle(SegmentedPickerStyle())
                .padding(10)

                ForEach(0 ..< 200) {item in
                    LocksItemView(number: item)
                }

            }
            .navigationBarTitle(Text("Locks"))
            .navigationBarItems(trailing: EditButton())
        }
    }
}

struct LocksItemView: View {

    @State private var paid : Bool = false
    var number: Int

    var body: some View {
        HStack {

            Text("L\(self.number)")
                .font(.title)
                .fontWeight(.heavy)
                .multilineTextAlignment(.center)
                .frame(width: 80)

            VStack(alignment: .leading) {
                Text("nickname")
                    .fontWeight(.bold)
                Text("category")
                Text("4 000 THB")
                    .fontWeight(.bold)
            }

            Spacer()

            Toggle(isOn: self.$paid) {
                Text("Paid")
            }
            .labelsHidden()
        }
    }
}

在我的手机上,结果是:

在此处输入图像描述

所以在 13.2 版本中存在错误,我希望 Apple 将它们全部修复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM