2008-11-26 5 views
1

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

Каков правильный способ исправить это, а не уменьшать размер таблицы TableView произвольно?

* EDIT *

Связанные в теме я создал в Broken cell with an odd strikethrough?. Эта проблема плюс проблема «пробития ячейки» возникает, когда я устанавливаю свою навигационную панель на прозрачный черный. Когда это черное непрозрачное или нормальное, такой проблемы не существует. Я не уверен, что это результат чего-то еще в моем коде или проблема с SDK.

ответ

3

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

+0

Привет, Ben, мой NIB выглядит следующим образом: http://dl-client.getdropbox.com/u/57676/controller.png. У меня есть UINavigationController, который находится в MainWindow.NIB с установленным корневым контроллером.Все, что я сделал, это добавить tableView для моего представления, UINavigationItem, и надеялся, что это сработает. – Coocoo4Cocoa 2008-11-26 18:08:54

0

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

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

1

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

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
0

У меня была такая же проблема на прошивкой 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 в заголовке и проблема исправлена. У меня есть полупрозрачный заголовок, и содержимое таблицы позиционируется правильно.

Смежные вопросы