UINavigationBar выше UITableView - PullRequest
       5

UINavigationBar выше UITableView

4 голосов
/ 02 апреля 2012

Я программно создаю класс UITableViewController, который показывает табличное представление с простой панелью навигации (хотя и без UINavigationController, поскольку в иерархии табличных представлений больше нет уровней).

Вот соответствующий код:

- (void)viewWillAppear:(BOOL)animated {
    UINavigationBar *navBar =  [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)];
    [self.tableView addSubview:navBar];
}

Однако панель навигации покрывает большую часть первой ячейки табличного представления и прокручивает весь вид.

Как можно исправить панель навигации вышепредставление таблицы, и не дать ему прокрутить код?

Ответы [ 5 ]

1 голос
/ 02 апреля 2012

Проблема в том, что вы используете UITableViewController.Переключитесь на стандартный UIViewController, добавьте делегат tableview и методы источника данных, укажите tableview на эти методы, и затем вы сделаете то, что хотите.Вы также можете добавить UIToolbar в XIB и создать его таким образом, если хотите.

Если вы действительно хотите панель навигации, тогда используйте контроллер NSNavigationView.

0 голосов
/ 08 августа 2015

Установите для полупрозрачного свойства панели навигации значение NO:

self.navigationController.navigationBar.translucent = NO;
0 голосов
/ 08 марта 2013

Решением этого поведения будет добавление UINavigationBar в представление контроллера родительского представления:

[self.parentViewController.view addSubview:myNavBar];
0 голосов
/ 02 апреля 2012

Наличие иерархии данных на самом деле не влияет на необходимость использования UINavigationController. Есть три веских причины, чтобы пойти дальше и просто использовать UINavigationController.

  1. Вы получаете панель навигации бесплатно, и Nav Controller обрабатывает установку правильного кадра вашего корневого контроллера представления, когда вы устанавливаете свойство контроллера корневого представления контроллера nav для вашего контроллера представления
  2. Если вы однажды проснетесь и скажете: «Привет! Я хочу добавить еще один слой информации в мое удивительное приложение!», Вам не нужно вносить какие-либо изменения в общий дизайн (или, самое большее, минимальный). из них).
  3. Как следует из моего комментария к предложению @ danh, вы невосприимчивы к любым дурацким изменениям, которые Apple может решить сделать в отношении высоты панели навигации.
0 голосов
/ 02 апреля 2012

Когда вы используете контроллер навигации, он позаботится об этом за вас, но панель навигации - это просто другое подпредставление. Средство защиты состоит в том, чтобы расположить представление таблицы относительно панели навигации.

self.tableView.frame = CGRectMake(0,myNavBar.frame.size.height, 320, self.view.frame.size.height-myNavBar.frame.size.height);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...