質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
TableView

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

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回答

1267閲覧

【Swift】SearchBarキャンセル時のメソッドの呼び出し方がわからない

ysda

総合スコア65

TableView

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

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/12/16 07:54

前提

現在、TeratailAPIを利用して、TableViewに質問を一覧形式で表示させるアプリを作成しています。
SearchBarを設置して、質問タイトル名を検索できる機能を実装しており、
以下の画像で示しております×ボタンを押すことで、検索している状態から元の一覧表示にしたいと考えています。
イメージ説明

実現したい動き

理想の動きとしては、以下の画像のようになっております。
①質問一覧が表示
②SearchBarにキーワードを入力し、検索ボタンを押すと、該当のタイトルが検索される
③SearchBarの×ボタンを押すと、元の質問一覧が表示される
イメージ説明イメージ説明!イメージ説明

発生している問題・該当のソースコード

上記を実装するために、以下のコードを記載いたしました。

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { print("cancel")//コンソールに出力されず getTeratailJson.fetchQuestion { (titles,created) in self.titleArray = titles//質問のタイトル名を取得 self.createdArray = created//質問の作成日時を取得 DispatchQueue.main.async { self.tableView.reloadData()//TableViewに質問一覧を表示 } } }

しかし、実際には以下のような動きとなってしまっています。
①質問一覧が表示
②SearchBarにキーワードを入力し、検索ボタンを押すと、該当のタイトルが検索される
SearchBarの×ボタンを押しても、表示が変わらず
イメージ説明イメージ説明イメージ説明

そもそもの問題として、上記のコードのうち、

print("cancel")//コンソールに出力されず

こちらが出力されていない時点で、×ボタンを押す=searchBarCancelButtonClicked()ではないとは
思っているのですが、その場合の別のメソッドがあるのかどうかを知りたいです。

長々と申し訳ないのですが、ご教示いただければ幸いです。

補足情報(FW/ツールのバージョンなど)

Xcode11
Swift5
です

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

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

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

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

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

guest

回答1

0

ベストアンサー

キャンセルボタンとクリアボタンは別物です。「×でテキストを消去したとき」は、「textDidChangeの中で、searchTextが空のとき」でハンドルできます。

投稿2019/12/16 08:06

thyda.eiqau

総合スコア2982

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

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

ysda

2019/12/16 08:11

ご回答ありがとうございます。 いただいたアドバイスをもとに実装できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問