Swift 在UISearchBar中设置文本字段

Swift 在UISearchBar中设置文本字段,swift,uitextfield,uisearchbar,uisearchcontroller,Swift,Uitextfield,Uisearchbar,Uisearchcontroller,我正在尝试将SearchController添加到UINavigationBar。我试图在UINavigationController的后退按钮后设置UISearchBar的UITextField。我想在后退按钮后多留点空间 当我开始搜索时,它显示为 而我应该能够查看后退按钮。只应减小文本字段宽度。同样在取消之后,它应该再次回到初始布局。鉴于其显示如下: 下面是我的代码 var searchResultController = UISearchController() self.

我正在尝试将SearchController添加到UINavigationBar。我试图在UINavigationController的后退按钮后设置UISearchBar的UITextField。我想在后退按钮后多留点空间

当我开始搜索时,它显示为

而我应该能够查看后退按钮。只应减小文本字段宽度。同样在取消之后,它应该再次回到初始布局。鉴于其显示如下:

下面是我的代码

var searchResultController = UISearchController()
    
self.searchResultController = ({
        
    let controller = UISearchController(searchResultsController: nil)
    controller.searchResultsUpdater = self
    controller.dimsBackgroundDuringPresentation = false
    controller.searchBar.sizeToFit()
    controller.searchBar.delegate = self
        
    controller.hidesNavigationBarDuringPresentation = false
    self.navigationController?.navigationBar.addSubview(controller.searchBar)
        
    return controller
})()

override func viewDidAppear(animated: Bool) {
    for subView in searchResultController.searchBar.subviews{
        for subsubView in subView.subviews  {
            if let textField = subsubView as? UITextField {
                var bounds: CGRect
                bounds = textField.frame
                bounds.size.width = self.view.bounds.width - 50    
            }
        }

    }
}
请让我知道如何解决这个问题


提前感谢您设置UIsearchBar并将其添加到导航标题视图中

self.navigationItem.titleView = controller.searchBar
要删除取消按钮,我们可以使用UISearchControllerDelegate方法

func didPresentSearchController(searchController: UISearchController) {
    searchController.searchBar.showsCancelButton = false
}
希望这对任何人都有帮助