我有2个控制器,一个是SubView。 MainController 可以访问SearchBar属性,而 SubViewController 则无法访问。主控制器中有一个SearchBar函数,我想在SubView控制器中调用它是这个函数
classify_enable_learning 0
classify_enable_adaptive_matcher 0
我想要做的是将上面的函数包含在另一个函数中,比如
// 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()
}
所以在我的SubView控制器中我可以做到
func Selected_Location() {
searchBarCancelButtonClicked(SearchBar)
}
我是Swift的新手,如前所述,如何才能获得 searchBarCancelButtonClicked 函数并在其他函数中调用它?我尝试过几种方式,比如
// SubView Controller
let Select_Close = MainController()
Select_Close.Selected_Location()
我的SubView控制器再次无法访问UISearchBar,所以我试图从SubView中调用SearchBar关闭函数。
答案 0 :(得分:2)
在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()
}
}