我是iOS编程的新手,我不确定为什么我的textDidChange
函数没有触发。在网上搜索了一堆,但无法找出我的代码和其他人之间的不同之处。这是我的 .h 和 .m 文件对于此视图控制器的样子:
CategoryTableViewController.h :
#import <UIKit/UIKit.h>
#import <Parse/Parse.h>
@interface CategoryTableViewController : UITableViewController
@property (weak, nonatomic) IBOutlet UIBarButtonItem *btnBack;
@property (weak, nonatomic) IBOutlet UISearchBar *txtSearchBar;
@property (strong,nonatomic) NSArray *allCategories;
@property (strong,nonatomic) NSMutableArray *filteredCategories;
//A stack containing the parent categories used to get to the current category.
@property (strong, nonatomic) NSMutableArray *parentCategories;
@end
CategoryTableViewController.m 的相关代码:
-(void)txtSearchBar:(UISearchBar*)txtSearchBar textDidChange: (NSString*)text
{
//do something
}
我使用Xcode的ctrl + click + drag来创建对头文件中搜索栏的引用。我在textDidChange
代码的开头放置断点和打印语句,但没有一个被调用。有什么想法吗?
答案 0 :(得分:5)
您需要设置txtSearchBar的delegate属性以使用委托方法。 确保添加
self.txtSearchBar.delegate = self;
在ViewDidLoad()
中和委托方法
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
//Do something
}
答案 1 :(得分:0)
如果您正在使用委托方法,请确保在需要调用委托的实例上设置委托属性,以便它知道有委托以及在何处发送操作。
如果您正在使用Interface Builder而不是委托,则需要创建IBAction函数,或者您可以使用UIControl的子类addTarget()方法为给定的事件类型创建回调。 / p>
答案 2 :(得分:0)
添加
self.txtSearchBar.delegate = self
在viewDidLoad()中。