所以我在我的标题中定义了一个IBAction,在我的主程序中实现了它,我可以在IB中看到它 - 但是,当我拖过UISearchBar时,它没有连接。
这是我的标题代码:
#import <UIKit/UIKit.h>
@class DetailViewController;
@interface CustomerListViewController : UITableViewController
{
}
-(IBAction)filterTableData:(UISearchBar *)filterBar;
@property (strong, nonatomic) DetailViewController *detailViewController;
@property (retain) IBOutlet UISearchBar *searchBar;
@property (strong, nonatomic)NSArray *custs, *workingSet;
@end
这是我的实施方法:
-(IBAction)filterTableData:(UISearchBar *)filterBar {
//filter our search results
NSString *filter;
if (filterBar.text)
filter = [filterBar.text stringByAppendingString:@"*"];
else
filter = @"*";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF LIKE[cd] %@", filter];
self.workingSet = [self.custs filteredArrayUsingPredicate: predicate];
[self.tableView reloadData];
}
这是IB实际看到该方法并允许它被拖动的图像,而我试图将其拖动到搜索栏时失败:
答案 0 :(得分:2)
UISearchBar不是UIControl的子类,这意味着您无法添加在事件发生时要调用的方法。
您要做的是将视图控制器设置为UISearchBarDelegate,并使用以下方法代替filterTableData:
方法。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
然后在IB中,您需要单击并从搜索栏拖动到文件所有者,然后选择委托属性。