Добавление панели поиска в NavigationView в SwiftUI - PullRequest
0 голосов
/ 13 января 2020

Я создаю проект с использованием SwiftUI и хотел бы добавить панель поиска на панель навигации, например, в приложении родных настроек, почтовом приложении и т. Д. c.

Я пробовал несколько вещей, но не могу заставить его работать. Следующий код работает нормально, но строка поиска не будет отображаться (я пытался прокрутить вверх), даже если я включу navigationController.navigationItem.hidesSearchBarWhenScrolling = false. Любая помощь будет оценена.

//
//  ContentView.swift
//  SwiftUITest
//
//  Created by me on 1/7/20.
//  Copyright © 2020 me. All rights reserved.
//

import SwiftUI

struct HomeView: View {
    var body: some View {
        ScrollView {
            HStack {
                Spacer(minLength: 0)

                Text("Hello World")

                Spacer(minLength: 0)
            }
        }
        .navigationBarTitle(Text("Search"))
    }
}

struct SecondView: View {
    var body: some View {
        return Text("Second View")
    }
}

struct CustomUIViewControllerRepresentation: UIViewControllerRepresentable {
    typealias UIViewControllerType = UINavigationController

    func makeUIViewController(context: Context) -> UINavigationController {
        let viewController = UIHostingController(rootView: HomeView())

        let navigationController = UINavigationController(rootViewController: viewController)
        navigationController.navigationBar.prefersLargeTitles = true

        let searchController = UISearchController()
        navigationController.navigationItem.searchController = searchController

        return navigationController
    }

    func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {

    }
}


struct ContentView: View {
    var body: some View {
        CustomUIViewControllerRepresentation()
    }
}

1 Ответ

1 голос
/ 13 января 2020

попробуйте это:

-> эта строка отсутствовала: viewController.navigationItem.searchController = searchController

 func makeUIViewController(context: Context) -> UINavigationController {
        let viewController = UIHostingController(rootView: HomeView())

        let navigationController = UINavigationController(rootViewController: viewController)
        navigationController.navigationBar.prefersLargeTitles = true

        let searchController = UISearchController()
        navigationController.navigationItem.searchController = searchController


        viewController.navigationItem.searchController = searchController

        return navigationController
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...