1

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

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

Я также понял, что изображения и текст вкладок не отображаются (я установил изображения и текст «избранное» и «контакты», и они достаточно большие и должны быть видны на верхней стороне вкладку, но это не так).

Обе вкладки отлично работают, кстати.

Существует image here.

я загружаю Tab Bar со следующим кодом:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    myTabBarController = [[UITabBarController alloc] init]; 
    SettingsViewController* tab1 = [[SettingsViewController alloc] init]; 
    AboutViewController* tab2 = [[AboutViewController alloc] init]; 
    NSArray* controllers = [NSArray arrayWithObjects:tab1, tab2, nil]; 
    myTabBarController.viewControllers = controllers; 
    [self.view insertSubview:myTabBarController.view belowSubview:myNavigationBar]; 
} 

Это не имеет значения, если я удалить панель навигации или нет. Я испробовал это вместо этого:

[self.view addSubview:myTabBarController.view]; 

... забыв о панели навигации, но панель вкладок все еще идет под низу.

Я не знаю, является ли проблема в одном из моих файлов NIB или в том, как я загружаю представление (хотя я это делаю, когда читаю в документации SDK от Apple). Есть идеи?

Другой вопрос: знаете ли вы, как я могу изменить заголовок своей панели навигации, когда я выбираю вторую вкладку? Я предполагаю, что мне придется делать это в viewDidLoad в AboutViewController.m, это было бы правильно?

Спасибо вам за внимание!

ответ

0

Пожалуйста, задайте один вопрос для представления - это позволит нам лучше помочь вам.

Для первой проблемы: вам нужно добавить контроллер панели вкладок к контроллеру навигации, а не к этому виду. Иерархия должна быть:

  • Навигационный контроллер
    • Tab Bar Controller
      • Ваш просмотр (ов)

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

Для вашего второго вопроса текст на кнопке «Назад» определяется свойством title предыдущего контроллера.Чтобы изменить его, выполните следующие действия (source):

- (void)viewDidLoad 
{ 
    [ super viewDidLoad ]; 

    UIBarButtonItem *backButton = 
    [[ UIBarButtonItem alloc ] initWithTitle:@"Back" 
             style:UIBarButtonItemStyleBordered 
             target:nil 
             action:nil ]; 
    self.navigationItem.backBarButtonItem = backButton; 
    [ backButton release ]; 
} 

EDIT: Похоже, вы хотите задать заголовок второго контроллера вида в навигационной стеке. Это легко:

- (void)viewDidLoad 
{ 
    [ super viewDidLoad ]; 

    self.title = @"Title"; 
} 
+0

Привет, Джефф, спасибо за ответ! Я создал такую ​​структуру, потому что представление, в котором у меня есть контроллер панели вкладок, выталкивается из корневого представления контроллера навигации ... поэтому я нажимаю вид (второе представление в стеке навигации), а затем добавляю панель вкладок Контроллер к нему. Это неправильно? Я не мог найти другого способа нажать второй вид (где у меня есть контроллер панели вкладок). Все работает отлично с этими настройками, единственная проблема заключается в том, что панель вкладок находится ниже нижней части экрана. – Manu

+0

Извините, что задал два вопроса одновременно, больше не повторится. Во всяком случае, в моем втором вопросе, что я хочу изменить, это название моей панели навигации, когда я переключаюсь на вторую вкладку (эта панель навигации НЕ является навигационной панелью навигационного контроллера, но другая панель навигации, которую я создал отдельно, и которая накладывается на (поэтому изменить название представления недостаточно ... Мне, вероятно, придется изменить заголовок самой панели, но панель объявлена ​​на предыдущем представлении). – Manu

+0

Для панели вкладок: можете ли вы попробовать использовать его свойство 'frame', чтобы разместить его? Вы должны иметь возможность разместить его там, где захотите. Для панели навигации: вам нужно будет хранить указатель на ней где-нибудь - возможно, определите ivar в вашем втором контроллере представления. Это все очень нестандартные вещи. Я не знаю, какова ваша конечная цель, но вы можете найти более полезные вещи в Руководстве по программированию View Controller: http: //developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html –

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