Смещение дочернего вида на 20 пикселей в приложении TabBar - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть приложение панели вкладок, и когда я отображаю модальный контроллер вида, экран контента смещается примерно на 20 пикселей вверх и влево. Это выглядит так: included image

Я представляю этот вид из дочернего контроллера вида (подробный вид) контроллера навигации (основной вид) представления вкладок.

Когда я показываю вид, я скрываю панель вкладок и панель навигации, но строка состояния остается видимой. Настройка вида, который должен быть центрирован (через Симулированные элементы интерфейса Interface Builder-> Режим просмотра: Центр), и изменение кадра вида после вызова 'viewDidLoad' в контроллере, похоже, не сдвигает его.

- (void)viewDidLoad {
// this still doesn't cause it to shift
self.view.frame = CGRectMake(0, 20, 320, 460);
}

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

Я запускаю дочерний вид так:

[detailController presentModalViewController:tvc animated:NO];          

Иерархия контроллера представления приложения:

Представление табуляции с двумя дочерними контроллерами навигации создается в делегате приложения, а контроллеры навигации добавляются в контроллеры представления TabBar:

tabBarController = [[UITabBarController alloc] init];   
tabBarController.viewControllers = [NSArray arrayWithObjects:tab1ViewController,    
                                    tab2ViewController, nil];

[window addSubview:tabBarController.view];

Каждый контроллер представления вкладки создается как NavigationController с 1 контроллером представления:

// MainViewController inherits from UIViewController
[MainViewController *viewController = [[MainViewController alloc] initWithNib..];

tab1ViewController.viewControllers = [NSArray arrayWithObject:viewController];

Контроллер подробного представления запускается с помощью pushViewController в результате некоторых действий над tab1ViewController:

DetailController *detailController = [[DetailController alloc] 
                                                 initWithNibName:@"DetailView" 
                                                 bundle:[NSBundle mainBundle]];

[self.navigationController pushViewController:detailController animated:YES];

[detailController release];

Именно из detailController я пытаюсь запустить проблемный контроллер.

1 Ответ

0 голосов
/ 09 февраля 2011

Некоторые вещи, которые нужно проверить сразу: действительно ли вызывается "viewDidLoad"? Если да, то что для self.view.frame установлено после назначения? Поместите NSLog в конец, который печатает x, y, width, height и посмотрите, что там.

Кроме того, поскольку проблема vc является модальной, она будет занимать весь экран. «На устройствах iPhone и iPod touch представление modalViewController всегда отображается в полноэкранном режиме».

НТН, Mike

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