我编写了一个Notebook应用程序。我将所有Object保存在一个数组和Core Data中。 现在我实现了一个UISearchBarController。 SearchBar的结果保存在filteredarray的不同数组中。如果我现在单击其中一个结果,它将更改为所单击对象的DetailView。如果我现在编辑注释的名称并保存,我将返回到过去的视图,并在CoreData中更改它。当视图出现时,搜索栏仍然处于活动状态,并且将使用我的filteredarray和我更改的对象构建tableview,具有旧名称。但是当我关闭搜索栏时,名称会发生变化。当我跳回主视图时,是否可以手动关闭搜索栏?
答案 0 :(得分:0)
试试这些:
override func viewDidAppear(animated: Bool) {
self.searchDisplayController?.active = false
}
答案 1 :(得分:0)
当视图消失(或出现)时,您需要禁用搜索显示控制器。我不清楚方法名称,但它应该是.enabled
或.active
或类似的东西。
话虽如此,我会在viewDidDisappear
中这样做,所以当你离开页面时已经完成了(并且当你回来时已做好准备)并且当你回到它时你没有闪光(如果你把它放在viewDidAppear
方法中
答案 2 :(得分:0)
UISearchBarController
继承自UIViewController,这意味着您可以使用这两种方法从主ViewController随意呈现和解除它。
let searchController = UISearchController() // example
self.presentViewController(searchController, animated: true, completion: nil) // your main ViewController will present the SearchBarViewController
searchController.dismissViewControllerAnimated(true, completion: nil) // your UISearchController() will dismiss itself
如果您希望保留UISearchController
并仅隐藏从UIView继承的UISearchBar
,那么您可以使用.hidden属性:searchController.searchBar.hidden = true
我也从您的问题中了解到,您的问题是searchBar仍处于活动状态,显示以前的搜索结果,您可以强制它变为非活动状态,从而更改以下属性:searchController.active = false
取消搜索界面但保留{ {1}}及其UISearchController
,如果用户选择点击搜索字段,则会再次使用它。