1

所以我在我的标题中定义了一个 IBAction,在我的 main 中实现了它,我可以在 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

4

1 回答 1

2

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

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

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

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

于 2012-10-24T19:51:42.837 回答