【问题标题】:Implement both UISearchController and UISearchDisplayController同时实现 UISearchController 和 UISearchDisplayController
【发布时间】:2014-08-08 17:40:17
【问题描述】:

我正在尝试让我的 iOS7 应用在 iOS8 上运行,我看到 UISearchController 替换了 iOS8 中的 UISearchDisplayController

当然,我可以使用UISearchController 代替UISearchDisplayController,但我的应用不再适用于iOS7。

如何让我的应用在两个 iOS 版本上都运行?我需要为 iOS8 制作另一个故事板吗?

提前致谢

【问题讨论】:

    标签: ios ios8


    【解决方案1】:

    如果您的部署目标设置为 iOS 7 并且您希望支持 iOS 8,您仍然可以使用 UISearchDisplayController,它应该可以在 iOS 8 上正常运行,并且不会在 Xcode 中显示警告。我在实现UISearchDisplayController 的应用程序中没有遇到任何不当行为。当我决定不再支持 iOS 7 时,我会用UISearchController 完全替换它。

    如果 8+,您可能能够检测操作系统版本并以编程方式实现 UISearchController,但如果您使用情节提要,则很难同时实现这两者,除非您创建两个不同的情节提要,每个情节一个用于操作系统。但是当您需要支持以前的操作系统时,我真的觉得没有必要。弃用通常并不意味着它在最新的操作系统上运行时不再起作用,而是不建议再使用它,因为有更好的解决方案可用。在较新的 iOS 版本上运行时,不推荐使用的方法无法正常工作的情况很少见。

    【讨论】:

    • 谢谢!顺便说一句,有没有比使用 Storyboard 更好的方法?
    • 不是真的,这更多是个人喜好。故事板/笔尖或纯代码,由您决定。 :)
    • 弃用并不意味着在最新的操作系统上运行时它将不再工作 - 非常正确。除非 Apple 决定完全删除它(通常是由于非技术原因,例如“真正的”UUID),否则即使经过大量版本更新,旧类也不太可能被删除。考虑到应用程序的生命周期,通常您不需要立即开始使用最新的类。
    【解决方案2】:
    // Above ios 8.0
    float os_version = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (os_version >= 8.000000)
    {
          //Use UISearchController  
            // self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
    }
    else
    {
         //use UISearchDisaplyController
         // self.controller = [[UISearchDisplayController alloc]initWithSearchBar:self.searchBar contentsController:self];
    
    }
    

    【讨论】:

    • 所以我必须从我的情节提要中删除 UISearchDisplayController 吗?而且我必须在同一个类中实现 UISearchController 和 UISearchDisplayController 的所有委托方法? (自我)
    • 我认为这不是一个好主意,IMO。协议具有不同的签名,您必须声明它们同时符合两者,同时一次只满足一个。
    • 从技术上讲,这是解决这类问题的方法,但对于整个 UI 类来说,工作量太大了。
    • 通过现代的@available 检查,this answer 将成为今天实现这类事情的方法。仅在其他人碰巧遇到与我相同的问题时发表评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多