私のコードは長すぎるようで、完全ではありません!
検索バーの重複を避けようとしています。私はそれを最初のエントリーのためだけに動かしています。
しばらくこれで遊んでいましたが、私が作っているように見えるものよりも簡単だと確信しています。
var search : String = ("1, ")
let numbers = search.map { String($0) }
let duplicates = Array(Set(numbers.filter({ (i: String) in numbers.filter({ $0 == i }).count > 1})))
for item in duplicates
{
search = search.replacingOccurrences(of: item, with: "")
}
if mainSearchBar.text != search
{
mainSearchBar.text = (mainSearchBar.text ?? "") + search
}
最初に入力した数字(コンマと空白を含む、合計3文字)は、2回目に入力したときに重複しません。これはすばらしいことです。
すでに検索バーにある番号がまったく重複しないようにしたい。
上記のコードはボタン1の機能です。いくつかのボタンがあります。
UISearchBarDelegate
それを助けることができる方法があります。これがお役に立てば幸いです。
このメソッドを使用すると、重複する文字が新しい文字列に含まれないようにすることができます
func removeDuplicates(in searchText: String) -> String {
var newString = ""
searchText.forEach { character in
if !newString.contains(character) {
newString.append(character)
}
}
return newString
}
そして、UISearchBarDelegateから継承する必要があります
extension **YourControllerName**: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchBar.text = removeDuplicates(in: searchText)
}
}
これを機能させるにmainSearchBar.delegate = self
は、コードのどこかに設定する必要があります。通常はviewDidLoad
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加