IBAction不会拖到UISearchBar

时间:2012-10-24 19:42:32

标签: objective-c ios xcode interface-builder ibaction

所以我在我的标题中定义了一个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实际看到该方法并允许它被拖动的图像,而我试图将其拖动到搜索栏时失败:

http://i.imgur.com/QLPMT.png

1 个答案:

答案 0 :(得分:2)

UISearchBar不是UIControl的子类,这意味着您无法添加在事件发生时要调用的方法。

您要做的是将视图控制器设置为UISearchBarDelegate,并使用以下方法代替filterTableData:方法。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

然后在IB中,您需要单击并从搜索栏拖动到文件所有者,然后选择委托属性。