使用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
方法,以便在搜索时更新搜索结果。
云+社区沙龙online第5期[架构演进]
Elastic 中国开发者大会
Elastic 中国开发者大会
Elastic 中国开发者大会
云+社区技术沙龙[第17期]
Elastic 实战工作坊
腾讯云GAME-TECH游戏开发者技术沙龙
云+社区技术沙龙[第21期]
腾讯位置服务技术沙龙
领取专属 10元无门槛券
手把手带您无忧上云