UITabBar помогите, пожалуйста, пока нет исправлений! - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть TabBar с 2 viewControllers, и основной экран.Что я хочу при запуске приложения, чтобы отобразить mainScreen view с TabBar внизу и переключаться на TabBars viewControllers только после касания TabBar.

Моя проблема в том, что TabBars viewController'sпредставления будут отображаться только, если я не установил представления TabBar на clearColor, only , тогда будет отображен основной экран.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2011

Ну, вы действительно должны поместить здесь свой applicationDidFinishLaunching code, чтобы помочь нам понять вашу цель.

Итак, идея в том, что они никогда не вернутся к «представлению главного экрана»?Это немного странно, но я думаю, что вы могли бы следить за панелью вкладок, и когда они нажимают на нее, вы удаляете главный экран.Таким образом, ваш основной делегат приложения будет выглядеть примерно так:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog(@"tab pressed");
    [self.mainScreen removeFromSuperview]; 
    self.mainScreen = nil;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //Build your tab controller here (or load in mainwindow.xib)
    self.window.rootViewController = self.tabBarController;
    self.tabBarController.delegate = self;

    //now build your mainScreen (or get from mainwindow); for example...
    self.mainScreen = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480-49)];
    self.mainScreen.backgroundColor = [UIColor blueColor];

    UIButton * temp = [[UIButton alloc] initWithFrame: CGRectMake(110, 60, 100, 20)];
    temp.backgroundColor = [UIColor redColor];    
    [mainScreen addSubview:temp];
    [temp release];

    //now put your mainscreen "over" your tabBar
    [self.tabBarController.view addSubview:mainScreen];

    [self.window makeKeyAndVisible];

    return YES;
}
0 голосов
/ 16 февраля 2011

Я думаю, это означает, что ваше представление главного экрана находится ниже представления TabBar в иерархии.Вы можете добавить свой «mainScreen» вид как подвид вашего начального представления tabBar.

Как только пользователь взаимодействует с панелью вкладок, вы можете просто удалить представление основного экрана.В вашей панели вкладок делегат:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
   if ([viewController.tabBarItem.title isEqualToString:@"TitleOfFirstViewInTabBar"]) {
       [mainScreenView removeFromSuperview]; // Assuming mainScreenView is available
   }
}
...