iOS 10では問題なく使えますが、iOS 11とXcode Beta 5で問題なく動作するアプリがありますスコープバーは底から切り取られたように見えます。 (Xcodeのベータ版とiOS 11のすべてのバージョンで同じだった)誰かが私を正しい方向に向けることができたら本当にうれしい。おかげで、あなたの上スウィフト4 - iOS 11検索バーのスコープが表示されません
は、私はハンバーガーのメニューボタンを押したときに、私が見るものを見ることができます。ここには問題ありません.. searchbarには、クリックしたときに表示されるスコープバーもあります。プログラムで表示するように設定していませんでしたが、スコープボタンのタイトルが設定されているときのデフォルト動作です。
問題:
私は上記の画面が表示された情報を入力して検索バーをクリックしてください。 iOS 10では問題はありませんでした。しかし、今は、iOS 11で、私は何でも私はそれがiOS 10で動作するように動作させることはできません。検索スコープバーは、下からカットされたように表示されます。
これはiOSの10に表示する方法であり、私はiOSの中で私が貼り付けています
画面の11
ストーリーボードビューになりたいです関連するコードはここにあります。
class SlideMenuViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UISearchControllerDelegate,UIGestureRecognizerDelegate{
let searchController = UISearchController(searchResultsController: nil)
@IBOutlet var sview: UIView!
@IBOutlet var tableView: UITableView!
override func viewWillAppear(_ animated: Bool) {
//some non relevant code before this
if sview.subviews .contains(searchController.searchBar) {
print("Already contains")
} else {
sview.addSubview(searchController.searchBar)
print(searchController.searchBar.showsScopeBar)
searchController.searchBar.sizeToFit()
searchController.searchBar.frame.size.width = view.frame.size.width
searchController.searchBar.barTintColor = searchBarTintColor
searchController.searchBar.tintColor = searchTintColor
}
}
override func viewDidLoad() {
//some other code
searchController.searchBar.delegate = self
searchController.searchBar.scopeButtonTitles = [NSLocalizedString("İsimlerde", comment: ""), NSLocalizedString("Açıklamalarda", comment: "")]
searchController.searchBar.returnKeyType = UIReturnKeyType.done
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
//some other code
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchController.isActive && searchController.searchBar.text != "" {
switch scpglobal {
case NSLocalizedString("İsimlerde", comment: ""):
return filteredIsimler.count
case NSLocalizedString("Açıklamalarda", comment: ""):
return filteredAciklamalar.count
default:
print("Tableview default")
}
}
return isimlerArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//some code about search here but nothing that will result in that behaviour
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
print("cancel")
searchController.searchBar.text = ""
}
func updateSearchResults(for searchController: UISearchController) {
let searchBar = searchController.searchBar
let scope = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex]
filterContentForSearchText(searchText: searchController.searchBar.text!, scope: scope)
tableView.reloadData()
}
}
extension SlideMenuViewController:UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
filterContentForSearchText(searchText: searchController.searchBar.text!, scope: searchController.searchBar.scopeButtonTitles![selectedScope])
}
}
編集:これは、検索バーに制約を追加するとどうなりますか。まずすべてが良いようです。
あなたが検索バーをクリックしたときに、このhappens..Searchバーが画面の外に移動。矢印を参照してください。
しかし、あなたは
それをスライドメニューを閉じて再度開く場合は、キャンセルボタンをクリックするまで、すべてがOKに動作します。その後、検索バーの動作を確認するために、このすべてを再度実行する必要があります。制約の
コード
searchController.searchBar.translatesAutoresizingMaskIntoConstraints = false
sview.addConstraint(NSLayoutConstraint(item: searchController.searchBar, attribute: .top, relatedBy: .equal, toItem: sview, attribute: .top, multiplier: 1, constant: 0))
sview.addConstraint(NSLayoutConstraint(item: searchController.searchBar, attribute: .bottom, relatedBy: .equal, toItem: sview, attribute:.bottom, multiplier: 1, constant: 0))
sview.addConstraint(NSLayoutConstraint(item: searchController.searchBar, attribute: .leading, relatedBy: .equal, toItem: sview, attribute: .leading,multiplier: 1, constant: 0))
sview.addConstraint(NSLayoutConstraint(item: searchController.searchBar, attribute: .trailing, relatedBy: .equal, toItem: sview, attribute: .trailing, multiplier: 1, constant: 0))
あなたが検索バーの制約を追加しましたか? –
@ImadAliはそれを試した。同じか悪い結果。 – TheTeacher33