Я создал пустой проект (XCode 4.2 IOS SDK 5), я добавил к нему новое представление и сделал его корневым контроллером представления внутри appDelegate, поэтому, когда приложение запускается, оно отображает это представление правильно, однако я добавил tabbarcontroller в представление, создал для него IBOutlet внутри вновь созданного представления и добавил эту строку в метод viewDidLoad представления:
[self.view addSubview:self.tabController.view];
поэтому панель вкладок загружается правильно в симуляторе iphone, но с небольшой проблемой, которую я не смог исправить: половина этой панели вкладок сдвинута вниз симулятора, что предотвращает появление заголовков вкладок, точно так же, как на следующем снимке экрана:
Как я могу исправить эту проблему?
Ответ 1 · рейтинг 2 · Evgeny Aleksandrov
Скорее всего из-за строки состояния. Но поскольку подпредставление, в которое вы вставляете контроллер, может быть любого размера, наиболее универсальным решением является:
[tabController.view setFrame:self.view.bounds];
(при условии, что self.view - это представление, куда вы его добавляете)
Ответ 2 · рейтинг 1 · DavidA
Вид с панелью вкладок имеет высоту 480 пикселей, но вид, в который вы его добавляете, меньше этого из-за строки состояния. Это означает, что он начинается на 22 пикселя ниже, а заканчивается на 22 пикселя ниже нижнего края экрана.
Если вы хотите, чтобы панель вкладок была глобальной для приложения, связала ее с IBOutlet в делегате приложения, сделайте это в своем методе didFinishLaunching:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ...
// Add the tab bar controller's view to the window and display.
[window addSubview:tabController.view];
[window makeKeyAndVisible];
return YES;
}
Это добавит его в главное окно, а не в другое представление. Это привяжет его к верхней части экрана, поэтому нижняя часть будет внизу экрана.