Верхнее поле на UITableViewController
У меня есть TabBarController, одна из вкладок которого содержит вложенное представление, которое является навигационным контроллером. Затем я загружаю в контроллер навигации представление, которое наследует форму UITableViewController.
Моя проблема заключается в том, что по какой-то причине табличное представление начинает подчиняться контроллеру навигации, а не верхней части экрана, а примерно на половине пути вниз по панели навигации, поэтому верхняя часть первой ячейки в табличном представлении обрезается.
Может кто-нибудь предложить, как переместить UITableViewController вниз?
3 ответа
Исправить это программно:
- (void)viewDidLoad {
UIEdgeInsets inset = UIEdgeInsetsMake(20, 0, 0, 0);
self.tableView.contentInset = inset;
}
Эта проблема "скрыта за панелью навигации" связана с тем, что iOS 7 использует полноэкранный макет автоматически. См. Руководство по переходу с iOS 7.
Это немного обманчиво, так как он отображается как в iOS 6 в Симуляторе (с точки зрения компоновки; т.е. не заправлен сзади).
Ваша панель навигации полупрозрачна? Мой был, и установка его на непрозрачный исправляет это на Iphone iOS 6, iPhone iOS 7 и симуляторе 7.0, строящем с XCode 5. (В моем случае я установил его на полупрозрачный для визуального представления.)
Вы можете установить рамку UITableView в явную позицию X,Y, установив свойство frame в представлении. Или вы можете изменить то же свойство, используя конструктор интерфейса, в зависимости от того, добавили ли вы просмотр таблицы через IB или в коде.
например.
myTable.frame = CGRectMake(0.0, myTable.frame.origin.y + NAV_BAR_HEIGHT, myTable.frame.size.width, myTable.frame.size.height);
Это позволит расположить таблицу myTable (которая является указателем на UITableView) ниже панели навигации, вам также может потребоваться соответствующим образом отрегулировать высоту таблицы. Высота навигационной панели, которую я указываю с помощью константы, равна 44.0.
Я обычно делаю этот тип настройки представления, если это было необходимо в viewWillAppear ответственного контроллера представления. Это не часто, что вам нужно сделать этот тип настройки, так что это может быть что-то, что вы можете исправить, изменив способ настройки ваших представлений.
Без более подробной информации о том, как настроен ваш вид, сложно быть более конкретным.