2016-11-16 3 views
0

2 개의 컨트롤러가 있고 하나는 서브 뷰입니다. MainController은 SearchBar 속성에 액세스 할 수 있으며 SubViewController에는 액세스 할 수 없습니다. 내가IOS 스위프트 검색 기능을 다른 기능에 포함하려면 어떻게해야합니까?

 // 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) 
    } 
같은 다른 함수에서 위의 기능 랩이다가이 함수 인 하위 뷰 컨트롤러에서 호출하고자하는 메인 컨트롤러에 SearchBar에 기능이 있습니다

그래서 내 하위 뷰 컨트롤러에서 나는 스위프트에 새로운 오전하기 전에 언급 한 바와 같이 내가 어떻게 searchBarCancel 얻을 수

// SubView Controller 
    let Select_Close = MainController() 

    Select_Close.Selected_Location() 

할 수있는 ButtonClicked 함수를 호출하고 다른 함수에서 호출? 나는 그런

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

    func Selected_Location() { 
     searchBarCancelButtonClicked(searchBar) 
    } 

가 다시 내 하위 뷰 컨트롤러 내가 하위 뷰 내에서 검색 창 닫기 함수를 호출하는 것을 시도하고있다 그래서 UISearchBar에 액세스 할 필요가 없기 때문에 여러 가지 방법으로 그 일을 시도했습니다.

서브 뷰에서
+0

중 하나 개 메소드를 호출합니다 나는 가정입니다 MainController는 검색 창 위임 맞습니까? 당신은 두 개의 컨트롤러가 있고 하나는 하위 뷰라고 말합니다. 두 개의 뷰와 두 개의 뷰 컨트롤러가 있다는 것을 의미합니까? 한 뷰는 다른 뷰의 하위 뷰이지만 둘 다 자체 컨트롤러가 있습니다. 자세한 내용을 입력하십시오. 위임자를 통해이 기능을 구현해야합니다. –

답변

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