为 iOS 8 创建的 UISearchController 不支持以前的版本

UISearchController created for iOS 8 not supporting for previous versions

您好,我创建了一个 UISearchController 来在我的应用程序中搜索 tableview,因为我知道 UISearchDisplay Controller 方法已被弃用 iOS 8,现在在 8.1 模拟器中一切正常,当我正在尝试 运行 我在 iPad 中的应用程序,它是 ios 版本 7.1,我发现搜索栏丢失了所以请帮助我如何创建一个支持所有 [=14] 的搜索栏=] 版本从 6.0

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController {
    UISearchBar *searchBar = searchController.searchBar;

    if (searchBar.text.length > 0) {
        NSString *text = searchBar.text;
        NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSString *play, NSDictionary *dict) {
        NSRange range = [play rangeOfString:text options:NSCaseInsensitiveSearch];

        return range.location != NSNotFound;
    }];

    NSArray *searchResults = [self.dataARR filteredArrayUsingPredicate:predicate];

没有好的答案。

如果您想要单个实现,那么正确的当前答案是:使用UISearchDisplayController。但是,正如您所说,这已被弃用。它现在有效,但可能在未来的某个时候消失。

其他选项:

  • 为 iOS 8 个用户保留当前的 ​​UISearchController 实施,并为 iOS 7 个用户使用 UISearchDisplayController 创建并行实施。这样做的好处是您可以在不再需要支持时删除已弃用的版本 iOS 7.
  • 停止支持 iOS 7

对于我的个人项目,我通常选择选项 2,但显然,这并不总是一个选项。