У меня есть UISearchController с searchBar, назначенным для элемента навигации моего контроллера представления. Все отлично работает в iOS 13.3. Однако в iOS 12.4 панель поиска отсутствует и, по-видимому, не была добавлена в иерархию представлений.
Вот интерфейс пользователя в iOS 13.3:
Здесь то же самое в iOS 12.4:
Мой код для настройки контроллера поиска: следующим образом:
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.obscuresBackgroundDuringPresentation = NO;
NSString *placeholder = NSLocalizedString(@"Address or place name", nil);
self.searchController.searchBar.placeholder = placeholder;
self.searchController.searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
self.searchController.searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
self.searchController.searchBar.delegate = self;
self.definesPresentationContext = YES;
self.navigationItem.hidesSearchBarWhenScrolling = NO;
self.navigationItem.searchController = self.searchController;
[self.searchController.searchBar sizeToFit];
Если я проверю иерархию представления для панели поиска, введя это в отладчике:
po self.navigationItem.searchController.searchBar.superview.superview
Я вижу следующее в iOS 13.3:
<UILayoutContainerView: 0x7f8c97b300c0; frame = (0 0; 375 812); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x60000373dd40>; layer = <CALayer: 0x6000038ae620>>
и это в iOS 12.4:
nil
Я использую версию Xcode 11.3.1 (11C504), и цели проекта iOS 12.0. Контроллер представления загружается из раскадровки и настраивается как контроллер подробного представления UISplitViewController.
Что я должен делать по-другому, чтобы панель поиска отображалась, как и ожидалось, в iOS 12?