1

そのため、ヘッダーに 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

4

1 に答える 1

2

UISearchBarはUIControlのサブクラスではありません。つまり、イベントが発生したときに呼び出されるメソッドを追加することはできません。

ビューコントローラをUISearchBarDelegateとして設定し、メソッドの代わりに次のメソッドを使用しますfilterTableData:

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

次に、IBで、検索バーをクリックしてファイルの所有者にドラッグし、デリゲートプロパティを選択します。

于 2012-10-24T19:51:42.837 に答える