IOS получить, когда выбран элемент uitabbarcontroller - PullRequest
4 голосов
/ 20 сентября 2011

Мне нужно получить, когда пользователь нажимает на tabbaritem в контроллере uitabbar, чтобы что-то изменить .. вот мой код:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    if (item == [tabBarController.tabBar.items objectAtIndex:2]) {
        item.title = @"add shot";
    }
    else
    {
        item.title = @"Race";
    }
}

но если я сделаю это:

self.tabBarController.tabBar.delegate = self;

я получаю сигкилл ...

какое правильное решение? заранее спасибо

Ответы [ 2 ]

6 голосов
/ 20 сентября 2011

Ваш контроллер представления соответствует протоколу UITabBarDelegate?В заголовочном файле:

@interface MyViewController : UIViewController<UITabBarDelegate> {
    // ...
}

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

@end

Затем просто сделайте:

tabBar.delegate = self;

Вместо:

self.tabBarController.tabBar.delegate = self;

И:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    //self.tabBarItem.title = @"Title";
}
3 голосов
/ 27 января 2013

Я сталкивался с этим ответом, изучая разработку для iOS, но я хотел включить небольшие недостающие фрагменты для n00bs, таких как я.

// HelloWorldViewController.h
@interface HelloWorldViewController : UIViewController <UITabBarDelegate>
{   
}
@property (weak, nonatomic) IBOutlet UITabBar *tabBar;    
@end

И

// HelloWorldViewController.m
@interface HelloWorldViewController ()

@end

@implementation HelloWorldViewController 
@synthesize tabBar;
- (void) viewDidLoad
{ 
   tabBar.delegate = self;
}

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
      NSLog(@"didSelectItem: %d", item.tag);
}

@end
...