Objective-c updateSearchResultsForSearchController没有被调用

时间:2016-03-17 00:56:24

标签: ios objective-c uitableview uisearchcontroller

我正在尝试将搜索功能应用到我的UITableView。我在店面板场景中添加了一个搜索栏,如下所示:

enter image description here

然后在我的头文件中,我添加了UISearchControllerDelegate和UISearchController,如下所示:

@interface LHFileBrowser : UITableViewController UISearchControllerDelegate>

@property(nonatomic, retain) NSArray * tableData;
@property (strong, nonatomic) IBOutlet UINavigationBar *NavBar;
@property (strong, nonatomic) NSArray *results;
@property (strong, nonatomic) UISearchController *controller;

@end

我将updateSearchResultsForSearchController方法添加到.m文件

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController {


    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains [c] %@", self.controller.searchBar.text];

    self.results = [self.tableData filteredArrayUsingPredicate:predicate];

}

我在NSPredicate上设置了一个断点,当我尝试使用我的搜索栏时,我什么都没得到,它没有达到我的断点,因此没有调用updateSearchResultsForSearchController。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

您需要将TableViewController设置为许多内容的委托,因此在viewDidLoad添加:

self.controller.searchResultsUpdater = self;
self.controller.delegate = self;
self.controller.searchBar.delegate = self;

您的界面中也有拼写错误,<之前应该有UISearchControllerDelegate

(另外,我建议您更改controller - &gt; searchController,以减少您的代码混乱。)