NavigationControllers и UITabBar - PullRequest
       2

NavigationControllers и UITabBar

0 голосов
/ 26 февраля 2012

У меня есть мое приложение, подобное этому: панель навигации в делегате приложения имеет Controller1 (UIViewController), например rootController, в controller1 i push controller2 (UIViewController), controller2 имеет 3 UINavigationController и пользовательский tabBar, каждый элемент navigationController есть корневой контроллер, и, наконец, я положил все навигационный контроллер в CustomTabBar.

Мой вопрос: это чисто (хорошо), чтобы делать так? Если нет, то как я могу организовать свой проект?

MyAppDelegate.h 
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UINavigationController *navigationController;
@property (strong, nonatomic) CustomTabBar *tabBarController;

MyAppDelegate.m {
UIViewController *controller1 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    navigationController = [[UINavigationController alloc] initWithRootViewController:controller1];
 self.window.rootViewController = navigationController;
}

controller1.h
    UIViewController controller2;
    UINavigationController *navigationController2;

    UIViewController controller3;
    UINavigationController *navigationController3;


    UIViewController controller3;
    UINavigationController *navigationController3;

controller1.m 
-(void)viewDidLoad{

viewController1 = [[UIViewController......
navigationController1 = [[UINavigationController alloc] initWithRootViewController:controller1];
....

AppDelegate *apDelegate= [UIApplication sharedApplication].delegate;

    apDelegate.tabBarController = [[CustomTabBar alloc] initWithNibName:nil bundle:nil];
   [apDelegate.tabBarController setViewControllers: [NSArray arrayWithObjects:navigationController1,navigationController2,navigationController3,nil]];
}

Ответы [ 3 ]

1 голос
/ 26 февраля 2012

Это отрывок из яблочной документации :

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

С моей точки зрения, с самого начала немного сложно разобраться, как использовать класс UITabBarController, поэтому в этом случае лучший подход - это посмотреть какое-нибудь хорошее руководство. Для меня этот помогает всегда, когда я начинаю возиться с этим UI:)

Удачи.

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

[theTabBar setHidden:YES];
0 голосов
/ 27 февраля 2012

, если вы хотите добавить tabBarController к представлению secondo:

[secondViewController.view addSubView:tabBarController.view];

или, для контроллера навигации

[navigationController1.view addSubView:tabBarController.view];
or
navigationController1.rootViewController = tabBarController;

Другими словами, в controller1.m вы объявляете TabBarController и добавляете navController1, navController2 и т. Д.

Затем добавьте tabBarController в controller1 как rootViewController или как subView.

Надеюсь, это то, что вы искали!

0 голосов
/ 26 февраля 2012

Установить tabBarController как rootViewController объекта окна:

self.window.rootViewController = tabBarController;

Или вы можете установить tabBarController.view как подпредставление объекта окна:

[self.window addSubView:tabBarController.view];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...