UINavigationBar отображается неправильно при объединении с UITabBarController - PullRequest
0 голосов
/ 24 сентября 2011

Я пытаюсь создать главный экран для UITabBarViewController с другим UINavigationViewController и подклассом UIViewController.

В приложении имеется:

  • две вкладки для загрузки NewsController и VideoController
  • HomeViewController, который загружается сразу после завершения запуска приложения.

Это мой снимок экрана приложения.

HomeViewController enter image description here

NavigationBar показывает половину

NewsViewController enter image description here

Это мой код.

// В TabBarWithHomeDelegate.m

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    homeViewController = [[HomeViewController alloc]init];

    UINavigationController *nav = [[UINavigationController alloc]init];

    nav.navigationItem.title = @"Tab 1 Data";
    [nav pushViewController:homeViewController animated:NO]; 


    [self.tabBarController setSelectedViewController:nav];

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

// В NewsViewController.m для прикосновения к кнопке home

-(IBAction) homeButtonClick:(id)sender
{
        TabBarWithHomeAppDelegate * appDelegate 
        = [[UIApplication sharedApplication] delegate];

        UITabBarController * tabBarController =  appDelegate.tabBarController;
        [tabBarController setSelectedViewController:nil];
        [tabBarController setSelectedViewController:appDelegate.homeViewController];

}

Кроме того, я приложил исходный код. Я буду рад, если ты это увидишь и поможешь мне решить это. На самом деле я пытаюсь сделать это сам почти 6 часов.

ссылка для скачивания исходного кода.

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Ваш HomeViewController не назначен в качестве вкладки в вашем UITabBarController, поэтому вы не должны вызывать:

[tabBarController setSelectedViewController:appDelegate.homeViewController];

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

[tabBarController presentModalViewController:homeViewController animated:YES];

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

0 голосов
/ 24 сентября 2011

Я просто комментирую ваш код в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions и все отлично работает:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
...