使用prepareForSegue
为DetailViewController
搜索栏的实现方法如下:
Storyboard
中为DetailViewController
创建一个SearchBar
,并将其与DetailViewController
的navigationItem
进行关联。DetailViewController
中,为SearchBar
添加一个UISearchController
,并将其与DetailViewController
的navigationItem
进行关联。DetailViewController
中,实现UISearchResultsUpdating
协议,并在searchBar
中设置searchResultsUpdater
属性为DetailViewController
。DetailViewController
中,实现prepareForSegue
方法,并在其中设置searchController
的searchResultsUpdater
属性为DetailViewController
。示例代码如下:
class DetailViewController: UIViewController, UISearchResultsUpdating {
@IBOutlet weak var searchBar: UISearchBar!
var searchController: UISearchController!
override func viewDidLoad() {
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar = searchBar
navigationItem.searchController = searchController
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationVC = segue.destination as? DetailViewController {
destinationVC.searchController = searchController
}
}
func updateSearchResults(for searchController: UISearchController) {
// 在这里实现搜索功能
}
}
在这个示例代码中,我们首先在viewDidLoad
方法中创建了一个UISearchController
,并将其与DetailViewController
的navigationItem
进行关联。然后,我们在prepareForSegue
方法中将searchController
的searchResultsUpdater
属性设置为DetailViewController
,以便在搜索时更新搜索结果。最后,我们实现了updateSearchResults
方法,以便在搜索时更新搜索结果。
领取专属 10元无门槛券
手把手带您无忧上云