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;
Я получаю сигкилл...
Каково правильное решение? заранее спасибо
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"; }
Я столкнулся с этим ответом, изучая разработку 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