Tujuan
Dapatkan data untuk ditampilkan di a scrollView
Hasil yang diharapkan
Hasil Aktual
Alternatif
gunakan List
, tetapi tidak fleksibel (tidak dapat menghapus pemisah, tidak dapat memiliki beberapa kolom)
Kode
struct Object: Identifiable {
var id: String
}
struct Test: View {
@State var array = [Object]()
var body: some View {
// return VStack { // uncomment this to see that it works perfectly fine
return ScrollView(.vertical) {
ForEach(array) { o in
Text(o.id)
}
}
.onAppear(perform: {
self.array = [Object(id: "1"),Object(id: "2"),Object(id: "3"),Object(id: "4"),Object(id: "5")]
})
}
}
return
print
pernyataan sebelumnya, makareturn
Jawaban:
Cara yang tidak terlalu rumit untuk mengatasi masalah ini adalah dengan melampirkan ScrollView dalam pernyataan IF yang memeriksa apakah array kosong
sumber
Perilaku yang diharapkan terjadi
Xcode 11.1
tetapi tidak aktifXcode 11.2.1
Saya menambahkan
frame
pengubah keScrollView
yang membuatScrollView
munculsumber
Saya telah menemukan bahwa itu berfungsi (Xcode 11.2) seperti yang diharapkan jika status diinisialisasi dengan beberapa nilai, bukan array kosong. Dalam hal ini, pemutakhiran berfungsi dengan benar dan keadaan awal tidak berpengaruh.
sumber
onAppear
, jadi menginisialisasi scrollView dengan data dummy mungkin bermasalahSalah satu solusi peretasan yang saya temukan adalah menambahkan "tidak terlihat"
Rectangle
di dalam scrollView, dengan nilai yangwidth
ditetapkan lebih besar dari lebar data discrollView
sumber