为什么搜索栏未显示在tabbarcontroller中?
我创建了一个包括搜索栏的homeviewController
。当我的rootviewController为HomeViewController
时,搜索栏看起来不错。但是,在我连接homeviewController
与tabbarcontroller
中的选项卡之后,我的搜索栏消失了。如果我只想在触摸该标签时显示它,该怎么办?
这就是我在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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论