UITabBar внутри Master View - PullRequest
       24

UITabBar внутри Master View

1 голос
/ 17 января 2012

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

Вот что я делаю в appDelegate, как вы можете видеть, я загружаю другоеЧем VC больше, чем главный VC, который поставляется с шаблоном, мой первый вопрос: должен ли я загрузить VC или просто NSObject с протоколом панели вкладок ?:

WTDInitialViewController *initialViewController = [[WTDInitialViewController alloc] initWithNibName:@"WTDInitialViewController" bundle:nil];
    UINavigationController *initialNavigationController = [[UINavigationController alloc] initWithRootViewController:initialViewController];

    WTDDetailViewController *detailViewController = [[WTDDetailViewController alloc] initWithNibName:@"WTDDetailViewController_iPad" bundle:nil];
    UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

    self.splitViewController = [[UISplitViewController alloc] init];
    self.splitViewController.delegate = detailViewController;
    self.splitViewController.viewControllers = [NSArray arrayWithObjects:initialNavigationController, detailNavigationController, nil];

    self.window.rootViewController = self.splitViewController;

Теперь это то, что я делаю втак называемый VC

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
    NSMutableArray *vcArray = [[NSMutableArray alloc] initWithCapacity:1];
    _tabBarController = [[UITabBarController alloc] init];
    WTDMasterViewController *masterViewController = [[WTDMasterViewController alloc] initWithNibName:@"WTDMasterViewController_iPad" bundle:nil];
    _navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    _navigationController.navigationBar.barStyle = UIBarStyleBlack;
    [vcArray addObject:_navigationController];

    _tabBarController.viewControllers = vcArray;
    _tabBarController.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;
    self.tabBarController.selectedIndex = 0;
    [_window addSubview:_tabBarController.view];
    [_window makeKeyAndVisible];
}
return self;

Это может быть глупый вопрос, но я зашел в тупик, поэтому любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 17 января 2012

Во-первых, я предполагаю, что вы создаете SplitView для ipad. Первоначально поставляется с MasterViewController и DetailViewController. И MasterViewController является базой UITableview, теперь вы хотите вместо этого реализовать базу Tabbar, а затем просто вызвать это в ViewWillAppear MasterViewController.

UIViewController *viewController1 = [[[YourTabView1 alloc] initWithNibName:@"YourTabView1" bundle:nil]autorelease];
//If you want the view support Navigation then do this
UINavigationController *tab1 = [[[UINavigationController alloc] initWithRootViewController:viewController1]autorelease];

UIViewController *viewController2 = [[[YourTabView2 alloc] initWithNibName:@"YourTabView2" bundle:nil]autorelease];
UINavigationController *tab2 = [[[UINavigationController alloc] initWithRootViewController:viewController2]autorelease];

UITabBarController *tabbarController = [[UITabBarController alloc] init];
tabbarController.viewControllers = [NSArray arrayWithObjects:tab1,tab2,nil];

[self presentModalViewController:tabbarController animated:YES];

Я думаю, что это должно работать (но я не тестировал код).

...