iPhone - вкладка + просмотр вопроса - PullRequest
0 голосов
/ 03 октября 2009

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

Теперь я добавляю два элемента tabBar к этому tabBar.

Я создал класс контроллера для файлов этого представления (.m и .h) и использовал делегатов в файле .h.

В файле .m я использовал следующую функцию:

  • (void) tabBar: (UITabBar *) TabBarControl didSelectItem: (UITabBarItem *) FirstView

Я назначил tag = 0 и tag = 1 соответствующим элементам tabBar.

Что я хочу сделать, так это то, что при щелчке первого элемента tabBar я хочу показать представление и при щелчке другого элемента tabBar я хочу показать другой вид.

Итак, в вышеупомянутой функции я проверяю, что если тэг нажатого элемента tabBar равен 0, то я покажу один вид, иначе я покажу другой вид.

Я показываю вид следующим образом:

Team1Scoreboard * tempTeam1Scoreboard = [Team1Scoreboard alloc]; tempTeam1Scoreboard = [tempTeam1Scoreboard initWithNibName: @ "UserTeamScoreboard" bundle: [NSBundle mainBundle]];

    self.cntrlTeam1Scoreboard = tempTeam1Scoreboard;

    [tempTeam1Scoreboard release];

    UIView *theWindow = [self.view superview];
    [self.view removeFromSuperview];
    [theWindow addSubview:self.cntrlTeam1Scoreboard.view];

Теперь проблема в том, что, когда я нажимаю на любой элемент tabBar, он загружает правильное представление, но сама tabBar исчезает, когда я добавляю представление к самому окну.

Пожалуйста, помогите мне, чтобы я мог загрузить правильный вид, а также сам мой tabBar виден.

1 Ответ

1 голос
/ 03 октября 2009

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

У вас есть ViewA, и у ViewA есть пара меток и TabBar. ViewA управляется ViewControllerA. В ViewControllerA вы создаете экземпляр ViewB и вызываете ViewControllerA.view addSubView:instanceOfViewB, верно? Перед этим вам нужно изменить размер ViewB.

Попробуйте что-то вроде этого:

ViewControllerB *viewControllerB = [[ViewControllerB alloc]initWithNibName:@"ViewB" bundle:nil];
CGRect frame = CGRectMake(self.view.frame.origin.x, 
                          self.view.frame.origin.y,
                          self.view.frame.size.width, 
                          self.view.frame.size.height - 40);
viewControllerB.view.frame = frame;
[self.view addSubview:viewB.viewControllerB];

В основном это должно быть близко к тому, что вы делаете, но я устанавливаю размер на 40 пикселей меньше (все, что вам нужно, чтобы удалить панель вкладок).

...