IOS 7 - UITableViewController с поиском находится в строке состояния

У меня есть UITableViewController с встроенным UISearchDisplayController. В iOS 7 окно поиска находится в строке состояния. Есть ли способ в построителе интерфейсов, чтобы компенсировать табличное представление, чтобы панель поиска не была закрыта в строке состояния (и все еще использует настройку UITableViewController и UISearchDisplayController)?

Ответы

Ответ 1

Вам нужно будет встроить его в UINavigationController, а затем в navVC просто снимите флажок Shows Navigation Bar enter image description here

Ответ 2

self.edgesForExtendedLayout=UIRectEdgeNone;

должен исправить эту проблему.

Ответ 3

Чувствует себя немного взломанным, но это работало для меня:

[self.tableView setContentInset:UIEdgeInsetsMake(self.navigationController.navigationBar.frame.size.height + [[UIApplication sharedApplication] statusBarFrame].size.height, 0, 0, 0)];

и если вы работаете для обеих ориентаций:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
 [self.tableView setContentInset:UIEdgeInsetsMake(self.navigationController.navigationBar.frame.size.height + [[UIApplication sharedApplication] statusBarFrame].size.height, 0, 0, 0)];

}

Ответ 4

Поместите следующий код в свой viewcontroller viewdidload.

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
{
        self.edgesForExtendedLayout = UIRectEdgeNone;
        self.extendedLayoutIncludesOpaqueBars = NO;
        self.automaticallyAdjustsScrollViewInsets = NO;
}

Ответ 5

self.edgesForExtendedLayout = UIRectEdgeNone;
...
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    if (navigation.hiden) {
        [self.tbview setContentOffset:CGPointMake(0, -20)];
        [self.tbview setContentInset:UIEdgeInsetsMake(20, 0, 0, 0)];
    }
    else {
        [self.tbview setContentOffset:CGPointMake(0, -20)];
        [self.tbview setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    }
}

Ответ 6

Мне нужно было отредактировать таблицу contentOffset и contentInset. Мой диспетчер tableview, вызванный модальным сегментом, уже встроен в контроллер навигации вверх по течению в раскадровке. Настройка вставки содержимого по высоте строки состояния и смещение содержимого по высоте строки поиска отображает начало таблицы в первой ячейке. Строка поиска отображается, когда пользователь отключает просмотр таблицы.

self.tableView.contentOffset = CGPointMake(0, 44.0);
self.tableView.contentInset = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0);

Ответ 7

Я нашел преступника. Установка опции макета "Настроить прокрутки" в положение "сделать" трюк.

Ответ 8

Все, что вам нужно сделать, это выбрать контроллер представления, в котором находится UITableView, и показать инспектору атрибутов. В Инспекторе атрибутов снимите флажок "Расширить края" → "Под верхними барами" и "Нижние бары". Это работало для меня, когда мой UITableview загружался под панелью навигации и панель вкладок

Ответ 9

после загрузки данных в табличный вид просто вызовите это в iOS 6/7

[self.tableView scrollToRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0] atScrollPosition: UITableViewScrollPositionTop анимированный: NO];

Но убедитесь, что панель поиска добавлена ​​как заголовок в представление таблицы