Ios 同时实现UISearchController和UISearchDisplayController

Ios 同时实现UISearchController和UISearchDisplayController,ios,ios8,Ios,Ios8,我正试图让我的iOS7应用程序在iOS8上运行,我发现UISearchController取代了iOS8中的UISearchDisplayController 当然,我可以使用UISearchController而不是UISearchDisplayController,但我的应用程序不再在iOS7上工作 如何使我的应用程序在两个iOS版本上都工作?我需要为iOS8制作另一个故事板吗 提前感谢如果您的部署目标设置为iOS 7,并且您希望支持iOS 8,那么您仍然可以使用UISearchDispla

我正试图让我的iOS7应用程序在iOS8上运行,我发现
UISearchController
取代了iOS8中的
UISearchDisplayController

当然,我可以使用
UISearchController
而不是
UISearchDisplayController
,但我的应用程序不再在iOS7上工作

如何使我的应用程序在两个iOS版本上都工作?我需要为iOS8制作另一个故事板吗


提前感谢

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

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

}

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

所以我必须从情节提要中删除UISearchDisplayController?我必须在同一个类中实现来自UISearchController和UISearchDisplayController的所有委托方法?(self)我认为这不是一个好主意,依我看。协议有不同的签名,你必须声明它们都符合,同时一次只满足一个。从技术上讲,这是解决此类问题的方法,但对于整个UI类来说,这太麻烦了。使用现代的@available检查,今天将如何实施这类事情。只有在其他人碰巧遇到与我相同的问题时才发表评论。谢谢!顺便说一句,有没有更好的方法来代替使用故事板呢?不完全是,这更多的是个人喜好。故事板/笔尖或纯代码,由您决定。:)弃用并不意味着在最新的操作系统上运行时它将不再工作-这是千真万确的。除非苹果决定完全删除它(通常是由于非技术原因,如“真正的”UUID),否则即使在大量版本更新之后,旧类也不可能被删除。考虑到应用程序的生命周期,通常你不需要马上开始使用最新的类。