UITabBar просмотр программно выбранного по нажатию

StackOverflow https://stackoverflow.com/questions/843231

  •  20-08-2019
  •  | 
  •  

Вопрос

У меня было приложение на основе навигационного контроллера.И я решил использовать панели вкладок в своем приложении.

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

Я попытался добавить в Interface Builder навигационный контроллер в свою панель вкладок, но viewWillAppear его контроллера просмотра не вызывается.

Как я могу реализовать эту функцию?

Это было полезно?

Решение

Я не знаю, "правильный ли это способ", но вот как я обычно делаю это с помощью трех вкладок.

- (void)initControls {
    // Create the window.
    [self setWindow:[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]];

    // Create Tab Bar.
    tabCon = [[UITabBarController alloc] init];

    // Local array variable that holds the viewcontrollers.
    // Capacity corresponds to the number of VC's
    NSMutableArray *localVCArray = [[NSMutableArray alloc] initWithCapacity:3];

    MyFirstViewController *oneViewController = [[MyFirstViewController alloc] init];
    UINavigationController *oneNavCon = [[UINavigationController alloc] initWithRootViewController:oneViewController];
    [localVCArray addObject:oneNavCon];
    [oneViewController release];
    [oneNavCon release];

    MySecondViewController *twoViewController = [[MySecondViewController alloc] init];
    UINavigationController *twoNavCon = [[UINavigationController alloc] initWithRootViewController:twoViewController];
    [localVCArray addObject:twoNavCon];
    [twoViewController release];
    [twoNavCon release];

    MyThirdViewController *threeViewController = [[MyThirdViewController alloc] init];
    UINavigationController *threeNavCon = [[UINavigationController alloc] initWithRootViewController:threeViewController];
    [localVCArray addObject:threeNavCon];
    [threeViewController release];
    [threeNavCon release];

    // Set the tab bars array of view controllers to the localVCArray
    [[self tabCon] setViewControllers:localVCArray animated:YES];

    // Release the localVCArray, all of its contents are now retained by tabCon.
    [localVCArray release];

    // Add controls to window and show.
    [window addSubview:[tabCon view]];
    [window makeKeyAndVisible];
}

В методе init each ViewController вы можете сделать что-то вроде:

[[self tabBarItem] setImage:[dataSource tabConImg]];
[[self tabBarItem] setTitle:[dataSource name]];
[[self navigationItem] setTitle:[dataSource navConName]];

Чтобы задать значок, используемый на панели вкладок, заголовок на панели вкладок и заголовок вашего элемента навигации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top