🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1017閲覧

[Swift]検索バーを固定し、結果を表示できるようにしたい

Jonny_dayo

総合スコア48

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/10/20 12:45

前提・実現したいこと

TableViewに検索バーをつけたのですが、スクロールしても動かないようにしたいです。
また、検索した時に検索結果が出るようにしたいです。
イメージ説明
search部分は上のとこと固定して、そこから下が引っ張られるようにしたいです。

発生している問題・エラーメッセージ

現状検索を押して文字入力しても何も表示されない状態です…

Value of type 'cookingViewController' has no member 'SearchResultsController'

該当のソースコード

func updateSearchResults(for searchController: UISearchController) { self.SearchResultsController = recipedata.filter{ // 大文字と小文字を区別せずに検索 $0.lowercased().contains(searchController.searchBar.text!.lowercased()) } self.tableView.reloadData() }

ソースコード一部抜粋

class cookingViewController: UIViewController, UINavigationControllerDelegate, UITableViewDelegate, UITableViewDataSource,UISearchControllerDelegate { var tableView:UITableView = UITableView() var searchController = UISearchController() var refreshControll = UIRefreshControl() override func viewDidLoad() { super.viewDidLoad() //refreshControllまとめ refreshControll.attributedTitle = NSAttributedString(string: "更新") refreshControll.addTarget(self, action: #selector(refresh), for: .valueChanged) tableView.addSubview(refreshControll) //searchControllerまとめ searchController.delegate = self searchController = UISearchController(searchResultsController: nil) searchController.hidesNavigationBarDuringPresentation = false searchController.searchBar.placeholder = "search" searchController.obscuresBackgroundDuringPresentation = true searchController.searchBar.sizeToFit() tableView.tableHeaderView = searchController.searchBar func updateSearchResults(for searchController: UISearchController) { self.SearchResultsController = recipedata.filter{ // 大文字と小文字を区別せずに検索 $0.lowercased().contains(searchController.searchBar.text!.lowercased()) } self.tableView.reloadData() } }

ツールのバージョン

Xcode : Version 11.0
Swift : Apple Swift version 5.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

tableView.tableHeaderView は使わず、 navigationItem.searchController にセットするのがiOS11〜からのベストプラクティスです。
https://developer.apple.com/documentation/uikit/uinavigationitem/2897305-searchcontroller
もしサポートするiOSのバージョンがそれでいいなら、もうそれだけ考えましょう。

(…えっ、iOS10以前もサポートしなければいけない? …えー、本当にやんなきゃダメですか? iOS10を切る方向に持っていけません…?)

投稿2019/10/22 14:36

takasek

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Jonny_dayo

2019/10/22 15:21

ありがとうございます!ありがとうございます!! 無事に searchController.searchResultsUpdater = (self as! UISearchResultsUpdating) という結果表示に関係ありそうなものが追加出来ました…!! が、検索窓に文字を入れても結果が表示されないです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問