我有AllOrganizacionUIView类,我在workink上使用了UISearchBarDelegate委托
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")
}
}
我在ViewController类中使用了UISearchBarDelegate委托,
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
}
}
请帮我解决这个问题。
答案 0 :(得分:1)
您必须为搜索栏设置委托,可能在viewDidLoad()
:
override func viewDidLoad() {
super.viewDidLoad()
self.SearchBar.delegate = self
}
但如果你将代表指向故事板而不是代码,情况会好得多。
所以,我在你的代码中看到了两个问题。首先,您的意思是您的委托是UIView
子类。但是你的意思是你想要使用在UIViewController
子类中实现的委托。
您只能同时拥有一名代表。选择一个(首选视图控制器),并在那里实现所有委托方法。然后就像我在答案开头所说的那样设置代表。
实际上,我建议您阅读Apple官方文档网站上的protocols和代表。我们需要仔细阅读文档,因为iOS中有许多与其他平台不同的独特内容。
答案 1 :(得分:0)
覆盖func viewDidLoad(){
super.viewDidLoad()
self.SearchBar.delegate = self
}
或在storyboard中设置您的委托。