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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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回答

1831閲覧

UISearchController の入力文字色を変更したい。

midori0822

総合スコア61

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クリップ

投稿2018/07/07 10:23

こんにちは。早速本題です。

ios11でnavigationcontroller内に検索窓を入れられるようになりました。

その検索窓内の入力文字色を変更したいです。

swift

1 private func setup() { 2 searchController = UISearchController(searchResultsController: nil) 3 searchController.searchResultsUpdater = self 4 searchController.obscuresBackgroundDuringPresentation = false 5 6 7 let textFieldInsideSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField 8 9 textFieldInsideSearchBar?.textColor = UIColor.white 10 // UISearchControllerをUINavigationItemのsearchControllerプロパティにセットする。 11 navigationItem.searchController = searchController 12 13 // trueだとスクロールした時にSearchBarを隠す(デフォルトはtrue) 14 // falseだとスクロール位置に関係なく常にSearchBarが表示される 15 navigationItem.hidesSearchBarWhenScrolling = true 16 } 17

上記のコードをviewDidAppear内に入れています。

海外のサイトをめぐり、

let textFieldInsideSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField textFieldInsideSearchBar?.textColor = UIColor.white

のようにsearchBarからtextFieldにアクセスすればいいと書いてあったのですがうまくいきません。

必要な情報があればお聞きください。
解決法がわかる方返信待っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

タイミングの問題でしょうか、viewDidAppearでフォントカラーを変更すると反映されました。

swift

1import UIKit 2 3class ViewController: UIViewController, UISearchControllerDelegate, UISearchResultsUpdating { 4 5 var searchController = UISearchController() 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 setup() 10 } 11 12 private func setup() { 13 searchController = UISearchController(searchResultsController: nil) 14 searchController.searchResultsUpdater = self 15 searchController.obscuresBackgroundDuringPresentation = false 16 self.navigationItem.searchController = searchController 17 navigationItem.hidesSearchBarWhenScrolling = true 18 } 19 20 override func viewDidAppear(_ animated: Bool) { 21 super.viewDidAppear(animated) 22 23 let textFieldInsideSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField 24 textFieldInsideSearchBar?.textColor = .red 25 } 26 27 func updateSearchResults(for searchController: UISearchController) { 28 29 } 30} 31 32

投稿2018/07/07 11:47

_Kentarou

総合スコア8490

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

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

midori0822

2018/07/07 19:06

そのとおりタイミングの問題でした! func updateSearchResults(for searchController: UISearchController) { } 内に記述することでしっかり色が変わってくれました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問