Внедрение как UISearchController, так и UISearchDisplayController

Я пытаюсь настроить приложение iOS7 на iOS8, и я увидел, что UISearchController заменяет UISearchDisplayController на iOS8.

Конечно, я могу использовать UISearchController вместо UISearchDisplayController, но мое приложение больше не работает на iOS7.

Как я могу заставить приложение работать на обеих версиях iOS? Мне нужно сделать еще одну раскадровку для iOS8?

Заранее спасибо

Ответ 1

Если ваша цель развертывания установлена ​​на iOS 7 и вы хотите поддерживать iOS 8, вы все равно можете использовать UISearchDisplayController, и она должна работать без проблем на iOS 8 и без предупреждений, представленных в Xcode. Я не испытывал никаких проблем с моими приложениями, которые реализуют UISearchDisplayController. Когда я решил больше не поддерживать iOS 7, я полностью заменил его на UISearchController.

Возможно, вы сможете обнаружить версию ОС и реализовать программный код UISearchController, если 8+, но если вы используете раскадровку, будет сложно реализовать оба варианта, если вы не создадите две разные раскадровки, по одной для каждой ОС. Но я действительно не считаю это необходимым, когда вам нужно поддерживать предыдущую ОС. Устаревание обычно не означает, что он больше не будет работать при работе с последней ОС, а скорее просто не рекомендуется использовать больше, потому что есть лучшие доступные решения. Это редко, когда устаревшие методы не работают должным образом при запуске на новых версиях iOS.

Ответ 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];

}