SwiftUI - предметы по уничтожению клеток - PullRequest
2 голосов
/ 05 ноября 2019

Вы можете полностью скопировать это на игровую площадку для воспроизведения. При запуске предварительный просмотр выглядит хорошо, но при прокрутке вверх и вниз элементы (HStack) исчезают. Я понятия не имею, почему ... Это ошибка Apple или в чем я не понимаю?

  //: A UIKit based Playground for presenting user interface

import UIKit
import PlaygroundSupport
import SwiftUI

struct Cell : View {

    var country: String

    var body: some View {
        VStack() {
            Text("OMG").onAppear() { print ("OMG") }
            ScrollView(.horizontal) {
                HStack() {
                    Text(country)

                }.background(Rectangle().fill(Color.blue))//.frame(height: 195)
            }.background(Rectangle().fill(Color.orange))//.frame(height: 205)

        }
    }
}

struct ContentView: View {

    var countries = ["a", "b", "c", "d", "e", "f", "g", "h"]

    init() {
        UITableView.appearance().showsVerticalScrollIndicator = false
        UITableView.appearance().showsHorizontalScrollIndicator = false
    }

    var body: some View {

        GeometryReader() { geometry in
            VStack() {
                Text("Title")
                List(self.countries, id: \.self) { country in

                    Cell(country: country)

                }.environment(\.defaultMinListRowHeight, 340)
            }
        }
    }
}

// Present the view controller in the Live View window
PlaygroundPage.current.liveView = UIHostingController(rootView: ContentView())

1 Ответ

1 голос
/ 05 ноября 2019

По моим исследованиям, проблема заключается в использовании ScrollView внутри List (возможно, проблема Apple). В качестве обходного пути (или альтернативы) вы можете рассмотреть замену List на ScrollView, как показано ниже (тело вашего ContentView, и вы можете добавить Divider () вручную, где вы хотели бы иметь похожий вид):

var body: some View {

    GeometryReader() { geometry in
        VStack() {
            Text("Title")
            ScrollView(.vertical) {
                ForEach(self.countries, id: \.self) { country in
                    Cell(country: country)
                        .frame(height: 340)
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...