опции для реализаций TabBar / UITabBarController - PullRequest
0 голосов
/ 18 июля 2011

Я новичок в xcode и пытаюсь понять, как работает UITabBarController. Я искал везде и не мог найти прямого решения этого вопроса. В большинстве примеров / учебных пособий, которые я вижу, UITabBarController определяется в AppDelegate, а затем, как только вы запустите приложение, вы сразу увидите панель вкладок. В моем приложении я хочу сначала показать экран приветствия, а затем, как только вы нажмете «Enter», вы попадете в представление панели вкладок. Итак, идеальная структура моих объектов будет следующей:

MyProjectAppDelegate -> MyProjectViewController -> FirstView / SecondView

Насколько я понимаю, в MyProjectAppDelegate с этой структурой не должно быть ничего связанного с панелью вкладок. Я попытался взглянуть на некоторые примеры, когда UITabBarController объявлен в AppDelegate и делает то же самое в MyProjectViewController, но ничего не происходит.

Например, я сделал это в моем MyProjectViewController внутри IBAction, который подключен к кнопке «Enter» на моем экране приветствия:

- (IBAction) EnterApp {

[window addSubview:tabBarController.view];

tabBarController = [[UITabBarController alloc] init];
tabBarController.delegate=self;

FirstView* first = [[FirstView alloc] init];  
UINavigationController *firstNav = [[UINavigationController alloc] initWithRootViewController:first];  

SecondView* second = [[SecondView alloc] init];  
UINavigationController *secondNav = [[UINavigationController alloc] initWithRootViewController:second];  

NSArray* controllers = [NSArray  arrayWithObjects:firstNav,secondNav, nil];  
tabBarController.viewControllers = controllers;  

[window addSubview:tabBarController.view];    
}

Опять же, это ничего не сделало, когда я нажал на кнопку «Ввод», даже если он выполняет работу в примере, где я его взял (где он находится внутри AppDelegate)

Я также попробовал это на моем MyProjectViewController, где панель вкладок отображалась в первом / втором представлении, но без возможности ее настройки (только пустые черные полосы, на которых ничего нет, и не знаю, где их настроить):

- (IBAction) EnterApp {

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIViewController *viewController1 = [[FirstView alloc] initWithNibName:@"FirstView" bundle:nil];
UIViewController *viewController2 = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];


self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];

}

Что здесь пошло не так и каким должен быть правильный путь? Быстрый пример будет высоко оценен.

Спасибо!

1 Ответ

1 голос
/ 18 июля 2011

У меня есть что-то похожее в одном из моих приложений.При первом запуске он показывает экран входа в систему.После успешного входа пользователя приложение переключается на управляемое представление панели вкладок.

Я переключаюсь в своем приложении appdelegate.Представление входа в систему отправляет уведомление, которое наблюдает делегат приложения, и перестраивает экран:

- (void)switchView:(NSNotification *)notification {
    MyTabbarView *homeView = [[MyTabbarView alloc] init];
    NSArray *controllers = [NSArray arrayWithObject:homeView];
    [mainNavController setViewControllers:controllers animated:YES];
    mainNavController.navigationBar.barStyle = UIBarStyleBlack;
    mainNavController.navigationBar.hidden = NO;
    [homeView release];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...