Xcode 10.1, Swift 4.2
ViewController A имеет LargeTitles , UISearchController и UITableView в действии.
При нажатии ViewController B (также TableView) после выбора TableViewCell происходит задержка в пространстве, которое было занято удалением UISearchBar, как показано в анимации.
ViewController B также имеетUISearchController, но, как обычно, скрыт до тех пор, пока пользователь не потянет вниз по экрану.
Кто-нибудь знает, как предотвратить это?
Дополнительная информация и код:
ViewController A При касании ячейки он толкает ViewController B с помощью Show (например, Push) перехода на раскадровкус Анимацией выбрано.Данные вводятся с использованием метода prepareForSegue .
performSegue(withIdentifier: "showLogbook", sender: self)
ViewController B:
class LogbookVC: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, UISearchResultsUpdating {
//Extract
private let searchController = UISearchController(searchResultsController: nil)
@IBOutlet private var addButton: UIBarButtonItem!
@IBOutlet private var shareButton: UIBarButtonItem!
@IBOutlet private var backButton: UIBarButtonItem!
@IBOutlet private var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
tableView.rowHeight = 75.0
//loading tableView data
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.prefersLargeTitles = true
self.definesPresentationContext = true
configureSearchController()
fetchAndSortLogEntries()
}
private func configureSearchController() {
navigationItem.searchController = searchController
searchController.searchResultsUpdater = self
searchController.searchBar.scopeButtonTitles = ["Newest", "Oldest"]
searchController.searchBar.delegate = self
searchController.searchBar.barStyle = .black
searchController.searchBar.tintColor = K.Colors.appMid
searchController.searchBar.keyboardAppearance = .dark
searchController.searchBar.returnKeyType = .done
searchController.dimsBackgroundDuringPresentation = false
let attributes = [NSAttributedString.Key.foregroundColor: K.Colors.appMid]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)
searchController.searchBar.setValue("Reset", forKey: "_cancelButtonText")
let searchBarCancelButton = searchController.searchBar.value(forKey: "cancelButton") as? UIButton
searchBarCancelButton?.setTitle("Reset", for: .normal)
}