Question

I have a number of tabs in my app. The tabs are working with no issues, but I'm getting some warning messages (in the title above) which I would like to get rid of. My code is as follows:

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

The tabs are working, but there is probably a better way of doing it so I don't get these warnings.

Regards, Stephen

Was it helpful?

Solution

You don't set actions directly on a UITabBarItem. Instead, you should be implementing the UITabBarDelegate in the UIViewController that creates it. Specifically, the delegate should implement:

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

In here, you can call pressItem1, pressItem2, etc based on which item is passed.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top