Ответ 1
Вам нужно будет встроить его в UINavigationController
, а затем в navVC
просто снимите флажок Shows Navigation Bar
У меня есть UITableViewController с встроенным UISearchDisplayController. В iOS 7 окно поиска находится в строке состояния. Есть ли способ в построителе интерфейсов, чтобы компенсировать табличное представление, чтобы панель поиска не была закрыта в строке состояния (и все еще использует настройку UITableViewController и UISearchDisplayController)?
Вам нужно будет встроить его в UINavigationController
, а затем в navVC
просто снимите флажок Shows Navigation Bar
self.edgesForExtendedLayout=UIRectEdgeNone;
должен исправить эту проблему.
Чувствует себя немного взломанным, но это работало для меня:
[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)];
}
Поместите следующий код в свой viewcontroller viewdidload.
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
{
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
self.automaticallyAdjustsScrollViewInsets = NO;
}
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)];
}
}
Мне нужно было отредактировать таблицу contentOffset
и contentInset
. Мой диспетчер tableview, вызванный модальным сегментом, уже встроен в контроллер навигации вверх по течению в раскадровке. Настройка вставки содержимого по высоте строки состояния и смещение содержимого по высоте строки поиска отображает начало таблицы в первой ячейке. Строка поиска отображается, когда пользователь отключает просмотр таблицы.
self.tableView.contentOffset = CGPointMake(0, 44.0);
self.tableView.contentInset = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0);
Я нашел преступника. Установка опции макета "Настроить прокрутки" в положение "сделать" трюк.
Все, что вам нужно сделать, это выбрать контроллер представления, в котором находится UITableView, и показать инспектору атрибутов. В Инспекторе атрибутов снимите флажок "Расширить края" → "Под верхними барами" и "Нижние бары". Это работало для меня, когда мой UITableview загружался под панелью навигации и панель вкладок
после загрузки данных в табличный вид просто вызовите это в iOS 6/7
[self.tableView scrollToRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0] atScrollPosition: UITableViewScrollPositionTop анимированный: NO];
Но убедитесь, что панель поиска добавлена как заголовок в представление таблицы