为什么搜索栏未显示在tabbarcontroller中?

发布于 2025-01-21 05:05:20 字数 2348 浏览 3 评论 0原文

我创建了一个包括搜索栏的homeviewController。当我的rootviewController为HomeViewController时,搜索栏看起来不错。但是,在我连接homeviewControllertabbarcontroller中的选项卡之后,我的搜索栏消失了。如果我只想在触摸该标签时显示它,该怎么办?

这就是我在homeviewController中所拥有的:

class HomeViewController: UICollectionViewController, UISearchBarDelegate {
    private let searchController = UISearchController(searchResultsController: nil)

    override func viewDidLoad() {
        super.viewDidLoad()
        setupSearchBar()
        }
    
    private func setupSearchBar(){
        definesPresentationContext = true
        navigationItem.searchController = self.searchController
        navigationItem.hidesSearchBarWhenScrolling = false
        searchController.searchBar.delegate = self
        let textFieldInsideSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField
        textFieldInsideSearchBar?.textColor = .black
        textFieldInsideSearchBar?.placeholder = "position"
        ......
    }
}

这就是我在tabbarcontroller中所做的事情:

class TabBarController: UITabBarController {
    var homepage: HomeViewController?
    ......

    var subviewController: [UIViewController] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        homepage = HomeViewController()
        ......

        subviewController.append(homepage!)
        ......

        homepage?.tabBarItem = UITabBarItem(title: "Home", image: UIImage(named: "home"), selectedImage: UIImage(named: "home-selected"))
        homepage?.tabBarItem.tag = 1
        ......
        self.setViewControllers(subviewController, animated: true)

        self.selectedIndex = 0
        self.selectedViewController = homepage
    }
}

这就是scendeelegate中的内容:

        guard let windowScene = (scene as? UIWindowScene) else{return}
            window = UIWindow(frame: windowScene.coordinateSpace.bounds)
            window?.windowScene = windowScene
            window?.rootViewController =
                    UINavigationController(rootViewController:
                    TabBarController())
            window?.makeKeyAndVisible()
        guard let _ = (scene as? UIWindowScene) else { return }

我是iOS的初学者。预先感谢任何人可以帮助我!

I created a HomeViewController which includes a search bar. The search bar looks good when my rootViewController is HomeViewController. But after I connected HomeViewController with a tab in TabBarController, my search bar disappears. What should I do if I want it to show only when I touch that tab?

This is what I have in HomeViewController:

class HomeViewController: UICollectionViewController, UISearchBarDelegate {
    private let searchController = UISearchController(searchResultsController: nil)

    override func viewDidLoad() {
        super.viewDidLoad()
        setupSearchBar()
        }
    
    private func setupSearchBar(){
        definesPresentationContext = true
        navigationItem.searchController = self.searchController
        navigationItem.hidesSearchBarWhenScrolling = false
        searchController.searchBar.delegate = self
        let textFieldInsideSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField
        textFieldInsideSearchBar?.textColor = .black
        textFieldInsideSearchBar?.placeholder = "position"
        ......
    }
}

This is what I did in TabBarController:

class TabBarController: UITabBarController {
    var homepage: HomeViewController?
    ......

    var subviewController: [UIViewController] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        homepage = HomeViewController()
        ......

        subviewController.append(homepage!)
        ......

        homepage?.tabBarItem = UITabBarItem(title: "Home", image: UIImage(named: "home"), selectedImage: UIImage(named: "home-selected"))
        homepage?.tabBarItem.tag = 1
        ......
        self.setViewControllers(subviewController, animated: true)

        self.selectedIndex = 0
        self.selectedViewController = homepage
    }
}

This is what in SceneDelegate:

        guard let windowScene = (scene as? UIWindowScene) else{return}
            window = UIWindow(frame: windowScene.coordinateSpace.bounds)
            window?.windowScene = windowScene
            window?.rootViewController =
                    UINavigationController(rootViewController:
                    TabBarController())
            window?.makeKeyAndVisible()
        guard let _ = (scene as? UIWindowScene) else { return }

I am a beginner in iOS. Thanks in advance if anyone can help me!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文