«UITabBarItem» может не отвечать на «SetAction» - PullRequest
0 голосов
/ 14 января 2012

У меня есть несколько вкладок в моем приложении. Вкладки работают без проблем, но я получаю несколько предупреждающих сообщений (в названии выше), от которых я хотел бы избавиться. Мой код выглядит следующим образом:

-(void)pressItem1:(id)sender {
    [self presentModalViewController:settingsViewController animated:YES];
}

-(void)pressItem2:(id)sender {
    [self presentModalViewController:infoViewController animated:YES];
}

-(void)pressItem3:(id)sender {
    [self presentModalViewController:aboutViewController animated:YES];
}

-(void)viewDidLoad {
    self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];

    CGRect frame = CGRectMake(0, 0, 480, 49);
    UIView *v = [[UIView alloc] initWithFrame:frame];
    UIImage *i = [UIImage imageNamed:@"smallMenuBackground.png"];
    UIColor *c = [[UIColor alloc] initWithPatternImage:i];
    v.backgroundColor = c;
    [c release];
    [mainTabBar insertSubview:v atIndex:0]; 
    [v release];    

    [settingsBarItem setAction:@selector(pressItem1:)];
    [infoBarItem setAction:@selector(pressItem2:)];
    [aboutBarItem setAction:@selector(pressItem3:)];

    //initialSyncSwitch = NO;
    [super viewDidLoad];
}

Вкладки работают, но, возможно, есть лучший способ сделать это, поэтому я не получаю эти предупреждения.

С уважением, Стивен

1 Ответ

2 голосов
/ 14 января 2012

Вы не устанавливаете действия непосредственно на UITabBarItem. Вместо этого вы должны реализовать UITabBarDelegate в UIViewController, который его создает. В частности, делегат должен реализовать:

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

Здесь вы можете позвонить pressItem1, pressItem2 и т. Д., Исходя из которых передается item.

...