更改Object |后更新TableView UISeachBar

时间:2015-02-14 22:54:08

标签: ios swift uisearchbar uisearchdisplaycontroller

我编写了一个Notebook应用程序。我将所有Object保存在一个数组和Core Data中。 现在我实现了一个UISearchBarController。 SearchBar的结果保存在filteredarray的不同数组中。如果我现在单击其中一个结果,它将更改为所单击对象的DetailView。如果我现在编辑注释的名称并保存,我将返回到过去的视图,并在CoreData中更改它。当视图出现时,搜索栏仍然处于活动状态,并且将使用我的filteredarray和我更改的对象构建tableview,具有旧名称。但是当我关闭搜索栏时,名称会发生​​变化。当我跳回主视图时,是否可以手动关闭搜索栏?

3 个答案:

答案 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,如果用户选择点击搜索字段,则会再次使用它。