2016-01-12 3 views
-1

У меня есть класс AllOrganizacionUIView, я использовал UISearchBarDelegate делегат в резаSwift: Как использовать делегат

class AllOrganizacionUIView: UIView , UISearchBarDelegate { 

    @IBOutlet var SearchBar: UISearchBar! 
    var searchActive : Bool = false 

    func searchBarTextDidBeginEditing(searchBar: UISearchBar) { 
    searchActive = true; 
    } 

    func searchBarTextDidEndEditing(searchBar: UISearchBar) { 
    searchActive = false; 
    } 

    func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    searchActive = false; 
    } 

    func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
    searchActive = false; 
    aa.SearchBar.endEditing(true) 
    print("hajox") 
    } 
} 

Предлагаю использовать UISearchBarDelegate делегат в классе ViewController,

class ViewController: UIViewController{ 
    @IBOutlet var SearchBar: UISearchBar! 
    // not working 
    func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool { 
    self.CircleImageView_3.image = UIImage(named: "FullCircle") 
    self.CircleImageView_2.image = UIImage(named: "Circle") 
    self.CircleImageView_1.image = UIImage(named: "Circle") 
    self.mMainCategory.hidden = true 
    self.mAllCategores.hidden = true 
    self.mAllOrganizations.hidden = false 
    self.FooterViewController.text = "Основные категории" 

    return true 
    } 
} 

Помогите мне пожалуйста с этой проблемой.

+1

Вы должны быть ближе к https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html , просто говоря, что делегат - это объект, на который вы ссылаетесь в своем " searchBar "и путем выполнения self.delegate.doSomething просто означает, что вы выполняете метод doSomething в своем объекте, который вы назначили делегату – Injectios

ответ

1

Вы должны установить делегат для панели поиска, возможно, в viewDidLoad():

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.SearchBar.delegate = self 
} 

Но это будет намного лучше, если бы вы указать делегат на раскадровке вместо кода.

Итак, я вижу две проблемы в вашем коде. Во-первых, вы имеете в виду, что ваш делегат является подклассом UIView. Но тогда вы имеете в виду, что хотите использовать делегат, который реализован в подклассе UIViewController.

Вы можете одновременно иметь только одного делегата. Выберите один (предпочтительный контроллер просмотра) и реализуйте все методы делегата. Затем просто установите делегата, как я сказал в начале моего ответа.

На самом деле, я предлагаю вам прочитать о protocols и делегатах на официальном сайте документации Apple. Очень важно внимательно прочитать документацию, потому что в iOS есть много уникальных вещей, которые отличаются от других платформ.

+0

, если используете его класс. AllOrganizacionUIView UISearchDelegate не работает –

+0

@ ՍարգիսԽաչատրյան, потому что вы можете иметь только одного делегата одновременно. –

0

переопределение функ viewDidLoad() {

super.viewDidLoad() 
self.SearchBar.delegate = self 

}

или установить делегат в раскадровке.

+0

Я знаю, я использовал 1 делегата searchbar в классе 2 –

Смежные вопросы