Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 13如何在导航栏中隐藏UISearchController搜索栏_Ios_Swift_Uisearchcontroller_Ios13 - Fatal编程技术网

iOS 13如何在导航栏中隐藏UISearchController搜索栏

iOS 13如何在导航栏中隐藏UISearchController搜索栏,ios,swift,uisearchcontroller,ios13,Ios,Swift,Uisearchcontroller,Ios13,我有带搜索栏的导航栏(UISearchController) 我有一个左栏按钮图标,单击该图标时,通过将其分配给navigationItem显示此搜索控制器,如下所示: if navigationItem.searchController != nil { navigationItem.searchController = nil navigationController?.view.setNeedsLayout() nav

我有带搜索栏的导航栏(UISearchController) 我有一个左栏按钮图标,单击该图标时,通过将其分配给navigationItem显示此搜索控制器,如下所示:

if navigationItem.searchController != nil {
            navigationItem.searchController = nil
            navigationController?.view.setNeedsLayout()
            navigationController?.view.layoutIfNeeded()
        } else {
            navigationItem.searchController = searchController
            navigationController?.view.setNeedsLayout()
            navigationController?.view.layoutIfNeeded()

            searchController.searchBar.becomeFirstResponder()
        }
它可以工作,但如果点击“取消”按钮,我试图隐藏搜索栏,则我已解除视图控制器,并出现黑屏(无视图控制器)


我已尝试添加延迟原因,但未从导航中删除此searchcontroller项目会使用标题+搜索控制器将其动画显示到扩展导航栏,然后点击搜索图标正确隐藏搜索控制器。所以问题是,我认为在将搜索控制器设置为扩展导航栏的动画时,删除搜索控制器将暂时解决您的问题:

func didDismissSearchController(_ searchController: UISearchController) {

        if #available(iOS 13, *) {
            navigationItem.searchController = nil

            self.navigationController?.view.setNeedsLayout()
            self.navigationController?.view.layoutSubviews()

            let view = UIView()
            self.navigationController?.navigationBar.insertSubview(view, at: 1)
            view.removeFromSuperview()
        }      
    }
func didDismissSearchController(_ searchController: UISearchController) {

        if #available(iOS 13, *) {
            navigationItem.searchController = nil

            self.navigationController?.view.setNeedsLayout()
            self.navigationController?.view.layoutSubviews()

            let view = UIView()
            self.navigationController?.navigationBar.insertSubview(view, at: 1)
            view.removeFromSuperview()
        }      
    }