У меня есть приложение панели вкладок, и когда я отображаю модальный контроллер вида, экран контента смещается примерно на 20 пикселей вверх и влево. Это выглядит так:
Я представляю этот вид из дочернего контроллера вида (подробный вид) контроллера навигации (основной вид) представления вкладок.
Когда я показываю вид, я скрываю панель вкладок и панель навигации, но строка состояния остается видимой. Настройка вида, который должен быть центрирован (через Симулированные элементы интерфейса 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 я пытаюсь запустить проблемный контроллер.