2017-04-04 8 views
1

나는 답을 찾고 있었고 도와 주셨으면합니다. 코드에서 실수는 보이지 않지만 "검색"버튼을 누르면 UISearchBarDelegate가 작동하지 않습니다. UISearchBarDelegate 검색 버튼이 작동하지 않습니다. 3 iOS 10.3

이 그냥 추측 내 수업

class BusquedaViewController: UIViewController, UISearchBarDelegate, UITableViewDelegate, UITableViewDataSource { 

@IBOutlet weak var tableView: UITableView! 
var searchBar: UISearchBar! 
var referencias: [Reference]! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.delegate = self 
    tableView.dataSource = self 
    searchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: 200, height: 20)) 
    searchBar.tintColor = UIColor.white 
    searchBar.delegate = self 
    self.parent?.navigationItem.titleView = searchBar 
    referencias = DataManager.sharedInstance.obtenerReferencias() 
} 

override func viewWillAppear(_ animated: Bool) { 
    self.parent?.title = "Busqueda" 
} 

//MARK: UISearchBar 
func searchBar(_ searchBar: UISearchBar, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 
    var placa = searchBar.text 
    if text.isEmpty { 
     return true 
    } else { 
     let uper = text.uppercased() 
     let allowed = "1234567890ABCDEFGHIJKLMNÑOPQRSTUVWXYZ-" 
     if !allowed.contains(uper) || (placa?.characters.count)! > 9 { 
      return false 
     } 
     searchBar.text = searchBar.text! + uper 
     return false 
    } 
} 

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { 
    searchBar.showsCancelButton = true 
} 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    searchBar.showsCancelButton = false 
    searchBar.text = "" 
    searchBar.endEditing(true) 
} 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    searchBar.endEditing(true) 
} 

//MARK: UITableView 
func numberOfSections(in tableView: UITableView) -> Int { 
    return referencias.isEmpty ? 1 : referencias.count 
} 
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 1 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = UITableViewCell() 
    if referencias.isEmpty { 
     //cell.textLabel?.text = NSLocalizedString("NO_REFERENCIAS", comment: "") 
    } else { 
     cell.textLabel?.text = referencias[indexPath.row].model 
    } 
    return cell 
} 
} 
+0

다른 대표가 호출되거나 –

+0

Storyboard가 아닌 코드를 통해 검색 표시 줄을 추가 하시겠습니까? – CodeChanger

+0

실제로 "searchBarSearchButtonClicked"를 제외한 모든 것이 작동합니다 –

답변

0

하지만 shouldChangeTextIn range: 방법은 리턴 키 (문자 \n)에 대해 false를 반환하고, 그 다른 대리자 메서드에 영향을 미칠 수있다. 아래 구현을 사용하기 위해 메서드를 수정 해보고 searchBarSearchButtonClicked 메서드가 호출되는지 확인할 수 있습니까?

func searchBar(_ searchBar: UISearchBar, shouldChangeTextIn range: NSRange, 
       replacementText text: String) -> Bool { 
    return true 
} 
+0

정말 고마워요. 결코 잡을 수 없습니다. –

+0

괜찮습니다. 그것이 당신을 도운다면 응답을 올려라. – Mark