私は完全にうまく動作するUITableViewを持っています。これはUITabbarControllerにネストされています。SearchResultDetailViewからUITableViewに戻る方法
また、UISearchControllerをUISearchBarに統合しました.UISearchBarは、ユーザーがUITableViewのコンテンツを検索できるようにします。これも正常に動作します。
TableViewCellの1つを選択すると、DetailViewが表示されます。
アクティブ検索なしでこれを行うと、すべて正常に動作しますが、searchtermを入力して結果からセルを選択すると、先頭に戻るボタンがないため、TableViewに戻ることはできません左隅にも、スワイプバックジェスチャーを使用することはできません。
は私がにsearchResults用に別のUITableViewを指定していないことを、追加する必要があります:
self.searchController.searchBar.delegate = self
self.searchController.searchResultsUpdater = self
self.tableView.tableHeaderView = self.searchController.searchBar
self.definesPresentationContext = true
私はこのようなSearchControllerを定義します。
var searchController: UISearchController = {
let controller = UISearchController(searchResultsController: nil)
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
return controller
}()
私は多分、私が持っていること、考えUITabbarControllerにUINavigationControllerを置き、TableViewをそのRootViewControllerとして設定しますが、次にNavigationBarの背後にSearchBarが隠されているという問題がありました。
EDIT(@ryantxr): 私didSelectRowAtIndexPath:cellForRowAtIndexPath
で
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
細胞が同じに見えるように、検索とノー検索に違いはありません。これは、なぜ私がまだ2つの異なるセグを使用していない理由です。
あなたが正しいです、私は検索と検索を使用しているときに別のセグを使用しません。ストーリーボードにセルがクリックされたときに使用される唯一のセグメントはprepareForSegue
です。ターゲットUIViewControllerの属性も正しく設定されていますが、これも正常に動作します。
あなたのテーブルビュー関数、didSelectRowAtIndexPath、cellForRowAtIndexPathなどを見ることができますか?それは検索対非検索の場合、詳細画面への遷移は別のセグに処理されますか? – ryantxr
明確にするために、非検索モードで詳細画面に切り替えると戻るボタンが表示されますが、検索モードから離れると戻るボタンは表示されません。これは正しいです? – ryantxr
はい、そうです – Heckscheibe