2010-03-25 17 views
10

Stworzyłem UITabBar i UITabBarItems bez UITabBarController na nim, teraz chcę wiedzieć, jak umieścić akcję na kliknięcie UITabBarItem.Co jest metoda, której powinienem użyć do działania na UITabBarItem?Jak utworzyć akcję dla elementu UITabBarItem?

+0

Zgodnie z wytycznymi interfejsu ludzkiego, paski na karty służą do przełączania widoków. Czy na pewno nie chcesz korzystać z paska narzędzi? –

Odpowiedz

2

Czy używasz kontrolera UINavigationController? Jeśli tak, to z aktywnego widoku kontrolera podklasy masz navigationItem i dodać przyciski do niej, np .:

- (void) viewWillAppear:(BOOL)animated; 
{ 
    [super viewWillAppear: animated]; 
    UIBarButtonItem * leftButtonItem = [[[UIBarButtonItem alloc] initWithTitle: @"Don't Show Again" style: UIBarButtonItemStyleBordered target: self action: @selector(permanentlyCloseWelcomeView)] autorelease]; 
    [[self navigationItem] setLeftBarButtonItem: leftButtonItem]; 
} 
+0

no ... nie używam żadnego kontrolera .. – suse

20

Nie można ustawić działanie na UITabBarItem obiektu bezpośrednio. Zamiast kontroler widoku powinny realizować następujące UITabBarDelegate metody:

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

Metoda ta jest wywoływana, gdy użytkownik wybierze kartę (tj UITabBarItem).

+0

to działało dla mnie, ale pamiętaj, aby ustawić delegata tabbar na "self" w viewdidload() – crackles

-2

Jest lepsza metoda niż didSelectItem: dla każdego TabBarItem utworzyć czynność:
[item1 setAction:@selector(pressItem1:)];
[item2 setAction:@selector(pressItem2:)];
[item3 setAction:@selector(pressItem3:)];
[item4 setAction:@selector(pressItem4:)];
a następnie można korzystać z nowych działań:

-(void)pressItem1:(UITabBarItem *) item1 {<br/> 
    // Here comes your code which<br/> 
    // occurs after pressing item1.<br/> 
} 

To działa na mnie

+1

używasz prywatnego API. Apple tego nie zaakceptuje. – user102008

+0

Wygląda na to, że tak. Ita to prywatne API. – Dilshan

1

Można uciec z wykorzystaniem instancji UIToolbar i UIBarButtonItem zamiast? To może być bardziej proste.

toolBar = [[UIToolbar alloc] init]; 
newPlayerItem = [[UIBarButtonItem alloc] initWithTitle:@"+" 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(newPlayer:)]; 

NSArray *toolBarItemsArray = [[NSArray alloc] initWithObjects:newPlayerItem, nil]; 
[toolBar setItems:toolBarItemsArray]; 
[toolBarItemsArray release]; 
Powiązane problemy