2017-01-06 27 views
0

我將UISearchController searchBar添加到控制器的視圖中,如下所示:self.view.addSubview(searchController.searchBar)。該功能工作得很好,除了在選擇tableview行時,搜索欄會快速向下移動並從頂部重新出現。我想下面的東西,其中沒有摸索出:UISearchController在解僱它時的奇怪行爲

  1. 設置tableView.tableHeaderView = searchController.searchBar,而不是直接添加到視圖
  2. 添加searchController.searchBar給我拖着到控制器上建立約束的獨立觀點。嘗試剪切以限制新創建的視圖和searchBar。
  3. 嵌入控制器在UINavigationViewController和設置self.navigationItem.titleView = searchController.searchBar。我定義了searchBar的框架,仍然沒有。
  4. 試圖在故事板與Extend Edges播放功能(在頂部酒吧等),但沒有選擇摸索出
  5. 添加線(至viewDIdLoad):

    self.extendedLayoutIncludesOpaqueBars = true

    self.definesPresentationContext = true

任何幫助將不勝感激。

+0

你的意思是點擊取消按鈕,tableView從原點位置向下移動? – aircraft

+0

是的,這也是。基本上當我們做'searchController.active = false'時,它向下移動,然後從頂部出來 –

+0

我知道這個問題,我在那裏回答:http://stackoverflow.com/questions/40991848/strange-issue-space -of-my-uisearchcontroller,如果它可以幫助你。 – aircraft

回答

0

嘗試建議的所有和搜索在互聯網上後,引起我的注意的是,UISearchController執行的工作實例中UITableViewController都做了,但我不得不UIViewController與它UITableViewDataSourceUITableViewDelegate協議。不幸的是,由於應用程序體系結構,我無法直接擁有UITableViewController,所以我需要重新構建應用程序,以便它具有UINavigationController,其中我嵌入searchBar,navigationItem.titleView(而不是像以前在各種教程中那樣將其設置爲tableView.tableHeaderView我需要修復searchBar,而不是在我們滾動時隱藏)並且工作。這裏是最終的工作程序架構的樣子:

enter image description here

TrainingContainerViewController有兩個Container View秒,在一個我們嵌入TrainingFilterTableViewController,顯示了的自動完成功能的最終結果(點擊自動完成行之後) 。另一個Container View嵌入UINavigationController(在左邊),其反過來具有TrainingSearchTableViewController作爲其子。

,設置了UISearchController及其searchBar位於TrainingSearchTableViewController S'viewDidLoad並代碼如下:

override func viewDidLoad() { 
    super.viewDidLoad() 

    searchController.searchResultsUpdater = self 
    searchController.hidesNavigationBarDuringPresentation = false 
    searchController.dimsBackgroundDuringPresentation = false 
    searchController.searchBar.sizeToFit() 
    searchController.delegate = self 
    navigationItem.titleView = searchController.searchBar 
    tableView.hidden = true 

    ... 
} 

沒有別的需要修復了XCode 8.2.1Swift 2.3,只是改變架構,因此在應用程序中可以使用UITableViewController並使用它而不是UIViewController

0

如果您正在使用故事板,可以通過選擇視圖控制器並在屬性檢查器中取消選擇調整滾動視圖插圖來更改它。

+0

不,它並沒有幫助 –