2017-04-01 2 views
2

handleSearch 함수를 호출하는 탐색 버튼을 만드는 데 문제가 있습니다. Argument of '#selector' cannot refer to local function이라는 메시지가 나타납니다. 어떤 도움을 주시면 감사하겠습니다!UIBarButtonItem - '#selector'인수가 로컬 함수를 참조 할 수 없습니다. Swift 3

override func viewDidLoad() { 
    // various code 

    func setupNavBarButtons() { 
     let searchImage = UIImage(named:"search_icon") 
     let searchBarButtonItem = UIBarButtonItem(image: searchImage, style: .plain, target: self, action: #selector(handleSearch(sender:))) 
     navigationItem.rightBarButtonItems = [searchBarButtonItem] 

    } 

    func handleSearch(sender: UIBarButtonItem) { 
     print(123) 
    } 
} 
+0

힌트 : 다른 함수 안에'handleSearch'가 있습니까? – rmaddy

+0

내부 viewDidLoad – Luke

+0

귀하의 의견에 따라 문제를 명확하게하기 위해 질문의 코드가 업데이트되었습니다. – rmaddy

답변

5

#selector은 최상위 함수가 아닌 (다른 함수 안에 하나) 로컬 함수를 참조 할 수있다.

handleSearchviewDidLoad으로 이동하면 문제가 해결됩니다.

+0

#selector func을 옮기고 싶지 않다면, 내 경우에는 func을 최상위 수준으로 옮기려면 너무 많은 작업이 필요합니다. – aeid

+0

@aeid'# selector'는 최상위 함수에서만 작동합니다. 기간. 함수를 이동하지 않으려면 선택기를 사용할 수 없습니다. – rmaddy

관련 문제