我有 2 个 Controller ,一个是 subview 。 MainController 可以访问 SearchBar 属性,而 SubViewController 不能。主 Controller 中有一个 SearchBar 函数,我想在 SubView Controller 中调用它就是这个函数
// MainController
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
// Stop doing the search stuff
// and clear the text in the search bar
searchBar.text = ""
// Hide the cancel button
searchBar.showsCancelButton = false
searchBar.endEditing(true)
Popup.Close_View()
}
我想做的是将上面的函数包装在另一个类似这样的函数中
func Selected_Location() {
searchBarCancelButtonClicked(SearchBar)
}
这样在我的 SubView Controller 中我可以做
// SubView Controller
let Select_Close = MainController()
Select_Close.Selected_Location()
我是 Swift 的新手,如前所述,我如何获得 searchBarCancelButtonClicked 函数并在另一个函数中调用它?我尝试过以多种方式做到这一点,例如
func Selected_Location() {
searchBarCancelButtonClicked(_ searchBar: UISearchBar)
}
func Selected_Location() {
searchBarCancelButtonClicked(searchBar)
}
同样,我的 SubView Controller 没有访问 UISearchBar 的权限,因此我尝试从 SubView 中调用 SearchBar 关闭函数。
最佳答案
在Subview中,保留MainViewController的弱引用,然后调用mainviewcontroller的一个方法searchBarCancel
class MainViewController:UIViewController {
var subViewController: SubViewController
func searchBarCancel(){
searchBarCancelButtonClicked(self.searchBar)
}
func func2(){
subViewController.mainController = self
}
}
class SubViewController:UIView {
weak var mainController: MainViewController?
func Selected_Location() {
mainController!.searchBarCancel()
}
}
关于IOS Swift 如何将搜索功能包含在另一个功能中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40622634/