2017-07-17 220 views
-1

我想拥有类似于Instagram应用程序的搜索功能。 在搜索栏中开始编辑时,按下视图控制器并让搜索栏过滤该控制器。但是,当我推动视图控制器时,导航栏中的搜索栏将消失,并显示一个后退按钮以及新视图。推视图控制器?

是否有可能

  1. 推离屏幕
  2. 底部的视图控制器保留搜索栏的消失

这里是我的func searchBarTextDidBeginEditing

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { 
    let layout = UICollectionViewFlowLayout() 

    let resultsController = ResultsController(collectionViewLayout: layout) 

    navigationController?.pushViewController(resultsController, animated: true) 

} 
+0

您确定他们推动视图控制器,而不是将部分大小的视图显示为动画叠加? –

+1

搜索栏结合视图控制器?你知道[UISearchController](https://developer.apple.com/documentation/uikit/uisearchcontroller)吗? – matt

+0

从底部推视图控制器不是推动动作的默认行为。它呈现出模态行为。如果你想这样做,你可以做一个自定义的动画类,并改变推动动画 –

回答

0

我建议将搜索栏作为父ViewController的一部分,并在搜索栏处于使用状态时在两个子视图控制器之间切换。此代码显示如何将子视图控制器添加到父级。有类似的方法来删除它。通过这种方式,您可以选择要在不同场景中显示哪个视图控制器。

self.addChildViewController(searchVC) 
self.scrollView.addSubview(searchVC.view) 
searchVC.didMoveToParentViewController(self) 
+0

是否可以对交换机进行动画处理? – Stefan

+0

我相信你可以添加一个动画到子View Controller的视图。使用此功能 - transitionFromViewController:toViewController: – clayjones94

+0

看看这篇文章:https://stackoverflow.com/questions/19162874/swapping-child-views-in-a-container-view – clayjones94