IOS Swift如何在另一个函数中包含搜索功能

时间:2016-11-16 01:33:50

标签: ios swift swift3 uisearchbar

我有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关闭函数。

1 个答案:

答案 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()
    }
}