потяните вниз, чтобы обновить данные в быстром пользовательском интерфейсе - PullRequest
1 голос
/ 03 ноября 2019

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

Но теперь я хочу иметь SwiftUI View в этом обновляемом представлении. В решении сказано, что я должен:

обернуть их в UIHostingController и поместить их в makeUIView

И вот моя проблема. Что я должен был сделать именно? Я попробовал следующее, но это не работает.

func makeUIView(context: Context) -> UIScrollView {
    let control = UIScrollView()
    control.refreshControl = UIRefreshControl()
    control.refreshControl?.addTarget(context.coordinator, action:
        #selector(Coordinator.handleRefreshControl),
                                      for: .valueChanged)

    // Simply to give some content to see in the app
    /*let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
    label.text = "Scroll View Content"
    control.addSubview(label)*/

    let parent = UIViewController()
    let child = UIHostingController(rootView: RecipeList())
    child.view.translatesAutoresizingMaskIntoConstraints = false
    child.view.frame = parent.view.bounds
    // First, add the view of the child to the view of the parent
    parent.view.addSubview(child.view)
    // Then, add the child to the parent
    parent.addChild(child)

    return control
}

Кто-нибудь знает, что я делаю неправильно, и может сказать мне, что я должен изменить?

Спасибо и наилучшими пожеланиями

Хенрик

...