ios - Objective-c updateSearchResultsForSearchController 没有被调用

标签 ios objective-c uitableview uisearchcontroller

我正在尝试将搜索功能应用于我的 UITableView。我像这样在 Storyboard场景中添加了一个搜索栏:

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。有什么我想念的吗?

最佳答案

您需要将 TableViewController 设置为许多事情的委托(delegate),因此在 viewDidLoad 中添加:

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

你的界面也有错字,应该是<之前 UISearchControllerDelegate .

(顺便说一句,我建议更改 controller -> searchController 以使您的代码不那么困惑。)

关于ios - Objective-c updateSearchResultsForSearchController 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049783/

相关文章:

ios - 如何使用 5 个以上的 ViewController 为 UITabBarController 中的过渡设置动画?

ios - 无法访问子文件夹中的所有文件

ios - 在 iOS 7 的 UITableView 上指示加载事件的正确方法是什么?

iPhone,在表格 View 中单击编辑/完成按钮的钩子(Hook)

ios - 使用关键字从字符串中提取文本

ios - AVAudioPlayer 不会播放 mp3 文件

objective-c - ControlTextDidChange 不适用于设置 NSTextField 的字符串

ios - 如何使用facebook sdk使用自定义登录按钮登录facebook

ios - 处理自定义 TableViewCell(在 .xib 中使用自动布局创建)的选择

ios - Xcode如何知道更新时要替换哪个应用程序