【问题标题】:UISearchController created for iOS 8 not supporting for previous versions为 iOS 8 创建的 UISearchController 不支持以前的版本
【发布时间】:2015-03-10 22:38:10
【问题描述】:

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

- (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];

【问题讨论】:

    标签: ios uisearchbar uisearchdisplaycontroller uisearchcontroller uisearchbardisplaycontrol


    【解决方案1】:

    没有一个好的答案。

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

    其他选项:

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

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

    【讨论】:

    • 你能分享一些使用 UISearchDisplayController 的示例项目吗
    • 你看文档了吗?那里有一个指向 Apple 的sample code 的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多