UITableView прокрутка под панелью навигации - PullRequest
1 голос
/ 26 ноября 2008

У меня есть настройка табличного представления, которая в данный момент, когда она мерцает, имеет разделы, расположенные справа внизу строки состояния, а не напротив панели навигации. Я не уверен, что это правильное поведение, но в большинстве приложений заголовок раздела отображается правильно под панелью навигации, когда он отображается.

Какой правильный способ исправить это вместо произвольного сокращения tableView?

* РЕДАКТИРОВАТЬ *

Относится к теме, которую я создал в Сломанная ячейка с нечетным зачеркиванием? . Эта проблема, а также проблема «проникновения через ячейку» возникает, когда я устанавливаю на панели навигации прозрачный черный цвет. Когда это Black Opaque или Normal, такой проблемы не существует. Я не уверен, является ли это результатом чего-то другого в моем коде или проблемы с SDK.

Ответы [ 4 ]

3 голосов
/ 26 ноября 2008

Звучит так, как будто у вас либо не установлены границы в IB, либо ваши пружины и распорки неверны. Это верхний уровень UIViewController или подпредставление? Вы используете UINavigationController? Если вы тестируете интерфейс в IB, он выглядит нормально?

1 голос
/ 13 апреля 2011

У меня была похожая проблема, и она устанавливается автоматически, установив

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
0 голосов
/ 26 июля 2012

У меня была такая же проблема на iOS 5.1 с использованием следующего кода:

Создание контроллера навигации и добавление табличного представления

UINavigationController *navigationController = [[UINavigationController alloc] init];
[navigationController setModalPresentationStyle:UIModalPresentationFormSheet];
[navigationController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
[navigationController.navigationBar setTranslucent:TRUE];
[navigationController setNavigationBarHidden:NO animated:NO];
[self presentModalViewController:navigationController animated:YES];

MyTableViewController *aTableViewController = [[[MyTableViewController alloc] initWithStyle:UITableViewStylePlain] autorelease];
aTableViewController.navigationItem.rightBarButtonItem = buttonItem;
[navigationController pushViewController:aboutTableViewController animated:YES];

Добавление вида заголовка таблицы в таблицу

ATableHeaderView aTableHeaderView = [[[ATableHeaderView alloc] initWithFrame:aboutTableView.frame] autorelease]; 
[aTableHeaderView setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin];
[aTableHeaderView sizeToFit];
[aTableView setTableHeaderView:aTableHeaderView];

В представлении заголовка таблицы я добавил несколько меток

UILabel *aLabel = [[[UILabel alloc] initWithFrame:CGRectMake(x,y, width, height)] autorelease];
[aLabel setText:aString];
[aLabel setAutoresizesSubviews:YES];
[aLabel setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];

Я получил содержимое заголовка таблицы под панелью навигации. Изменение навигационной панели на сплошной черный исправлено. Но это не то, что я хотел. После некоторых проб и ошибок я удалил строку:

[aLabel setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];

Из настройки UILabel в шапке и проблема исправлена. У меня есть полупрозрачный заголовок, и содержимое таблицы расположено правильно.

0 голосов
/ 27 ноября 2008

Как я указал в другом посте, я подозреваю, что иерархия представлений в UINavigationController нарушена.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...