Reputation: 309
When we go portrait mode while using a UISplitViewController, they will provide us by a barButtonItem. How can I use a customView for that barButtonItem?
I tried the following way. It works if I start with portrait orientation. But if I go landscape and when I come back it crashes.
In viewDidLoad
UIImage *image = [UIImage imageNamed:@"home.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake(0, 0, 22.00, 22.00);
[button setImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(showHomeDetails) forControlEvents:UIControlEventTouchDown];
homeButton = [[UIBarButtonItem alloc] initWithCustomView:button];
[button release];
Then in willHideViewController
barButtonItem = homeButton;
What shud I do? OR is there an alternate solution?
Upvotes: 0
Views: 1170
Reputation: 13814
Assuming an image is the custom view you're looking for:
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
[barButtonItem setImage:[UIImage imageNamed:@"awesome_menu_icon.png"]];
[[self navigationItem] setLeftBarButtonItem:barButtonItem];
}
Upvotes: 0
Reputation: 309
Rewrote it like this inside the willHideViewController and its done.
UIImage *image = [UIImage imageNamed:@"news.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake(0, 0, image.size.width, image.size.height );
[button setImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(showSideTable) forControlEvents:UIControlEventTouchUpInside];
[barButtonItem setCustomView:button];
Main change is removed [button release].
Upvotes: 1
Reputation: 8526
I believe it should be this:
UIImage *image = [UIImage imageNamed:@"home.png"];
UIImageView *imageView = [UIImageView initWithImage:image];
homeButton = [[UIBarButtonItem alloc] initWithCustomView:imageView];
[homeButton addTarget:self action:@selector(showHomeDetails)];
[homeButton setBounds:CGRectMake(0, 0, 22.00, 22.00)];
Hope this solves your problem
jrtc27
Upvotes: 0