2017-07-17 181 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