Панель инструментов + панель навигации + сегментированное управление? - PullRequest
3 голосов
/ 22 ноября 2011

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

Я нарисовал очень грубый набросок (извините!), Но я надеюсь, что он иллюстрирует намерение.

App layout Внизу есть две вкладки (tab1 и tab2).

Когда выбрано Tab1, на панели навигации будут 3 кнопки, которые будут отображать различные виды (tab1_1, tab1_2, tab1_3).

Когда выбрано Tab2, на панели навигации не будут отображаться какие-либо кнопки, а будет простой текст.

На данный момент у меня есть следующая схема в didFinishLaunchingWithOptions моего делегата приложения:

    UIViewController *viewController1 = [[Tab1_ViewController alloc] initWithNibName:@"Tab1_ViewController" bundle:nil];
    UIViewController *viewController2 = [[Tab2_ViewController alloc] initWithNibName:@"Tab2_ViewController" bundle:nil];

    tab1NavController = [[UINavigationController alloc] initWithRootViewController:viewController1];
    tab2NavController = [[UINavigationController alloc] initWithRootViewController:viewController2];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:tab1NavController, tab2NavController, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];

Мне было интересно, нужно ли мне переделывать то, что я делаю, чтобы добиться макета, как на картинке.

Буду признателен за любую помощь, спасибо!

1 Ответ

3 голосов
/ 22 ноября 2011

Я сделал это для моего текущего проекта ... Я надеюсь, что это поможет вам ....

Сначала возьмите UITabbarController у вашего первого viewController [первый набросок, который вы дали]

Для первого просмотра используйте этот код ....

 - (void)viewDidLoad {
[super viewDidLoad];

dashBoardView = [[DashboardViewController alloc] initWithNibName:@"DashboardViewController" bundle:nil];
dashBoardView.title = @"dashBoardView";
UINavigationController *mydashboarController = [[[UINavigationController alloc] initWithRootViewController:dashBoardView] autorelease];
mydashboarController.navigationBar.barStyle = UIBarStyleBlack;
[listOfViewControllers addObject:mydashboarController];
[dashBoardView release];

ordersView = [[OrdersViewController alloc] initWithNibName:@"OrdersViewController" bundle:nil];
    ordersView.title = @"ordersView";
UINavigationController *myorderController = [[[UINavigationController alloc] initWithRootViewController:ordersView] autorelease];
myorderController.navigationBar.barStyle = UIBarStyleBlack;
[listOfViewControllers addObject:myorderController];
[ordersView release];

orderList = [[OrderListViewController alloc] initWithNibName:@"OrderListViewController" bundle:nil];
orderList.title = @"orderList";
UINavigationController *myorderListController = [[[UINavigationController alloc] initWithRootViewController:orderList] autorelease];
myorderListController.navigationBar.barStyle = UIBarStyleBlack;
[listOfViewControllers addObject:myorderListController];
[orderList release];

productView = [[ProductViewController alloc] initWithNibName:@"ProductViewController" bundle:nil];
    productView.title = @"productView";
UINavigationController *myproductController = [[[UINavigationController alloc] initWithRootViewController:productView] autorelease];
[listOfViewControllers addObject:myproductController];
[productView release];

[self.tabBarController setViewControllers:listOfViewControllers animated:YES];

NSArray *segmentTextContent = [NSArray arrayWithObjects:NSLocalizedString(@"Dashboard", @""),NSLocalizedString(@"Order", @""),
                               NSLocalizedString(@"Product", @""),NSLocalizedString(@"More", @""),
                               nil];
UISegmentedControl* segmentedControl = [[UISegmentedControl alloc] initWithItems:segmentTextContent];
segmentedControl.selectedSegmentIndex = 0;
segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.frame = CGRectMake(0, 0, 400, 40);
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];

//defaultTintColor = [segmentedControl.tintColor retain];   // keep track of this for later

segmentedControl.tintColor = [UIColor colorWithHue:8.0 saturation:8.0 brightness:8.0 alpha:1.0];
segmentedControl.alpha = 0.8;

self.navigationItem.titleView = segmentedControl;
[segmentedControl release]; 
}

Если вам не ясно, пожалуйста, стук ...

...