• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 750
  • Last Modified:

Modify UIToolBarItem image

Hello EE Mac,

I have a UIToolBarItem at the buttom and if the user presses it, it update a value in my DataBase.
What I would like is a new image appears on that same Item so the user knows it has been pressed if he goes back to see the current page.

Actually, it a kind of "Like"   like in Facebook. so when he presses, I would lile to see an image of a Thumbs up. if he presses again, It would be an image of "Like me!"    you know ?

How can I change this without creating a new Item or maybe I could have 2 UITOolbarItem at the same X Y  and one is visible the other is not?

: /
0
PhilippeRenaud
Asked:
PhilippeRenaud
  • 9
  • 8
1 Solution
 
SpeedyApocalypseCommented:
You can use the setImage: method of the UIToolBarItem.

[[myViewController tabBarItem] setImage:[UIImage imageNamed:@"anImage.png"]];

Open in new window

0
 
PhilippeRenaudAuthor Commented:
so I can recall it by the index? when you write tabBarItem you mean the name of it?/ the index of it?
0
 
SpeedyApocalypseCommented:
tabBarItem is a property of your view controller.
0
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

 
PhilippeRenaudAuthor Commented:
Ok but I am trying to figure out how do I recall the item I want to change the image?
Lets say I have 4 of them, and the 3rd one on the left is the one i need to change..?
0
 
SpeedyApocalypseCommented:
Where do you change the image?  Are you in the viewController that the tab represents?
0
 
PhilippeRenaudAuthor Commented:
Yes, I have a @selector on the tabBarItem image  called buttonHit

and in it this is where I would like to change the image.

But I just remembered that i pass  (id) sender     and I guess I could use that?  Not sure how tho..
0
 
SpeedyApocalypseCommented:
Could you post your code please?
0
 
SpeedyApocalypseCommented:
So you are simply tapping the tab bar, and it could be in any tab?
0
 
PhilippeRenaudAuthor Commented:
this is how I create the BarButtonItem.

    UIImage *likeImage = [UIImage imageNamed:@"240x320-thumbs-up.png"];
    UIButton *likeButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [likeButton setImage:likeImage forState:UIControlStateNormal];
    [likeButton addTarget:self action:@selector(likeButtonHit:) forControlEvents:UIControlEventTouchDown];
   
    likeButton.frame = CGRectMake(0, 0, likeImage.size.width, likeImage.size.height);
                                 
    UIBarButtonItem *like = [[UIBarButtonItem alloc] initWithCustomView:likeButton];

little after I do this line:

            [self setToolbarItems:[NSArray arrayWithObjects:fixedLeft, flex, left, fixedCenter, right, flex, like, action, nil]];



then on the actionSelector:


-(void)likeButtonHit:(id)sender{
change image here....
}
0
 
SpeedyApocalypseCommented:
With your sender, just set the image.

[sender setImage:[UIImage imageNamed:@"anImage.png"] forState:UIControlStateNormal];

Open in new window


You can also add some code to  see what it currently is.

if ([sender imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"anImage.png"]) {
    [sender setImage:[UIImage imageNamed:@"anotherImage.png"] forState:UIControlStateNormal];
} else {
    [sender setImage:[UIImage imageNamed:@"anImage.png"] forState:UIControlStateNormal];
}

Open in new window

0
 
PhilippeRenaudAuthor Commented:
but will I be able to change the image of the UIImage? because remember in my code i need to create an UIImage and a UIButton to get a colored barButtonItem otherwise its blank.. ?
0
 
SpeedyApocalypseCommented:
That code changes the button's image.  You can also iterate through the tabBar toolbarItems array and change the custom view altogether.
0
 
PhilippeRenaudAuthor Commented:
ok . just one last thing.  when I start to write your code, after writing sender i do not see imageForState when I press ESC
0
 
SpeedyApocalypseCommented:
Try typecasting it.  [(UIButton *)sender imageForStat...];
0
 
PhilippeRenaudAuthor Commented:
Do you see the error??

    if([(UIButton*)sender imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"240x320-thumbs-up.png"]){
       
    }

expected ) before isEqual

looks fine to me..?
0
 
SpeedyApocalypseCommented:
My bad.  Typing on the browser is unreliable at best.

if([[(UIButton*)sender imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"240x320-thumbs-up.png"]]){
        
    }

Open in new window

0
 
PhilippeRenaudAuthor Commented:
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

  • 9
  • 8
Tackle projects and never again get stuck behind a technical roadblock.
Join Now