NavigationBar
에 UISearchBar
이 있습니다. searchBar를 누르면 새보기가 나타나지만 내 검색 창을 계속 활성화 (동일한 navBar)합니다. 왜냐하면 그냥 pushViewController
을 사용하면 새보기가 새 NavigationBar
으로 표시되고 내 UISearchBar
이 사라집니다.새로운보기이지만 여전히 동일한 탐색 모음이 있습니다
UISearchBar
:
extension HomeController {
func setupNavigationBar() {
searchBar.delegate = self
searchBar.searchBarStyle = UISearchBarStyle.minimal
searchBar.placeholder = "Search"
searchBar.barTintColor = UIColor.gray
navigationItem.titleView = searchBar
}
public func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
searchBar.showsCancelButton = true
let layout = UICollectionViewFlowLayout()
let firstVC = HomeController(collectionViewLayout: layout)
let secondVC = UserSearchController(collectionViewLayout: layout)
self.addChildViewController(secondVC)
secondVC.view.frame = firstVC.view.bounds;
self.view.addSubview(secondVC.view)
secondVC.didMove(toParentViewController: self)
secondVC.view.frame = CGRect(x: firstVC.view.frame.size.width, y: secondVC.view.frame.origin.y, width: secondVC.view.frame.width, height: secondVC.view.frame.size.height)
UIView.animate(withDuration: 0.33) {
secondVC.view.frame = firstVC.view.bounds;
}
}
}
public func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searchBar.text = nil
searchBar.endEditing(true)
searchBar.showsCancelButton = false
}
func hideSearchBar() {
navigationItem.setRightBarButton(searchBarButtonItem, animated: true)
label.alpha = 0
UIView.animate(withDuration: 0.3, animations: {
self.navigationItem.titleView = self.label
self.label.alpha = 1
}, completion: { finished in
})
}
}
새로운보기 :
이import UIKit
class UserSearchController: UICollectionViewController {
override func viewDidLoad() {
super.viewDidLoad()
collectionView?.backgroundColor = UIColor.blue
}
}
답변 해 주셔서 감사합니다. 하지만 두 번째 옵션을 선택하면 코드를 어떻게 처리해야합니까? 나는 조금 주위를 수색했지만 여전히 코드를 작성해야하는 방법을 알지 못한다. 나는 Swift와 함께 꽤 새로운 사람이다. – Stc
답안을 편집하고 샘플 코드를 추가했습니다. – Srdr
내 질문을 편집하고 코드를 추가했습니다. 여전히 작동하지 않습니다. 이제 코드를 작성해야합니다. – Stc