ios извлекается, когда выбран элемент uitabbarcontroller

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

- (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;

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

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


person ghiboz    schedule 19.09.2011    source источник


Ответы (2)


Соответствует ли ваш контроллер представления протоколу 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";
}
person chown    schedule 19.09.2011
comment
с tabBarController.delegate не дает мне sigkill, но метод didSelectItem принадлежит UITabBarDelegate, а не UITabBarControllerDelegate - person ghiboz; 20.09.2011
comment
Обновленный ответ, попробуйте это. - person chown; 20.09.2011

Я наткнулся на этот ответ, изучая разработку для 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
person Alex Nolasco    schedule 27.01.2013
comment
БРАВО! Вы сделали мой день! Отличный кусок кода, который работает для меня! - person Nasenbaer; 21.03.2013