Сделайте TabBarItem выбранным при запуске - PullRequest
1 голос
/ 30 июля 2011

Я работаю над проектом для iPhone iOS4 с Xcode 4.

Я создал UITabBar с тремя UITabBarItem в IB. У меня не UITabBarControllerDelegate в качестве делегата, но MainViewController.

Затем я реализую в MainViewController:

 - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
     switch (item.tag) {
         case 1:
             [scrollView setContentOffset:(CGPointMake (0,0))];
             break;
         case 2:
            [scrollView setContentOffset:(CGPointMake (320,0))];
             break;
         case 3:
            [scrollView setContentOffset:(CGPointMake (640,0))];
             break;
         default:
             break;
       }
    NSLog(@"didSelectItem: %d", item.tag);
}

Это работает хорошо, как я хочу.

Но я не могу сделать TabBarItem выбранным при запуске (в viewDidLoad). Я стараюсь

     [tabBar setSelectedItem:calc];
     [tabBar setSelectedItem:1];

(cal - это ivar из MainViewController) и другие, но ни одна из них не работает. Любое предложение?

Спасибо.


Это MainViewController.h

  #import "FlipsideViewController.h"
  #import <CoreData/CoreData.h>
  #import <QuartzCore/QuartzCore.h>

  @interface MainViewController : UIViewController <FlipsideViewControllerDelegate>   {

     UITabBar *tabBar;
     UITabBarItem *diagBarItem;
     UITabBarItem *calcBarItem;
 }

 @property (nonatomic, retain) IBOutlet UITabBar *tabBar;
 @property (nonatomic, retain) IBOutlet UITabBarItem *diagBarItem;
 @property (nonatomic, retain) IBOutlet UITabBarItem *calcBarItem;

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item; 

 @end

Ответы [ 3 ]

3 голосов
/ 30 июля 2011

Вызов -setSelectedItem: на панели вкладок используется для программного перемещения UITabBarItems в разные места на панели вкладок.

Чтобы изменить выбранную вкладку, вам нужно изменить свойство selectedIndex в экземпляре UITabBarController. Свойство tabBarController в UIViewController автоматически устанавливается Интерфейсным Разработчиком. Попробуйте это в -viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tabBarController.selectedIndex = calc;
}
0 голосов
/ 30 июля 2011

Вам нужно установить выбранную вкладку на UITabBarController, а не на самой панели вкладок:

[self.tabBarController setSelectedIndex:3];

Как вы сказали, это не работает, вы уверены, что вы подключили розетки вИнтерфейсный конструктор?(Предполагая, что вы использовали это для создания панели вкладок)

0 голосов
/ 30 июля 2011

Дайте этому шанс!

tabBar.selectedIndex = 1;
...