2016-11-16 4 views
0

У меня есть 2 контроллера, а один - SubView. MainController имеет доступ к свойству SearchBar, а SubViewController - нет. Существует функция SearchBar в главном контроллере, который я хотел бы вызвать в контроллере подвид это функцияIOS Swift как включить функцию поиска в другую функцию

 // 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 
    let Select_Close = MainController() 

    Select_Close.Selected_Location() 

Я новичок в Swift и, как было сказано выше, как я могу получить searchBarCancel ButtonClicked функция и вызов ее внутри другой функции с? Я попытался сделать это несколькими способами, например, как

func Selected_Location() { 
     searchBarCancelButtonClicked(_ searchBar: UISearchBar) 
    } 

    func Selected_Location() { 
     searchBarCancelButtonClicked(searchBar) 
    } 

Опять мой подвид контроллер не имеет доступа к UISearchBar поэтому я пытаюсь вызвать тесную функцию SearchBar внутри подвид.

+0

С вашего текущего описания, есть несколько вещей, которые неясны: Я предполагаю, что MainController является SearchBar делегат правильно? Вы говорите, что у вас два контроллера, а один - подвью. Вы имеете в виду, что у вас есть два вида, и два контроллера представления, где одно представление является подчиненным другим, но у них обоих есть свой собственный контроллер? Пожалуйста, предоставьте более подробную информацию. Вы захотите реализовать эту функцию через делегата. –

ответ

2

В подвид, держать слабую ссылку на 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() 
    } 
} 
Смежные вопросы