Question

I have a navigation bar with three buttons on the right (arrows for navigation + a sharing button). On the Iphone simulator I can see them well and they are working perfect. When I installed the app on a real Iphone 4 device the buttons are not shown at all!!! (my simulator is IPhone 3, if it metter). My code is:

UIToolbar *tools = [[UIToolbar alloc]
                    initWithFrame:CGRectMake(0, 0, 70.0f,     44.01f)]; // 44.01 shifts it up 1px for some reason
tools.clearsContextBeforeDrawing = NO;
tools.clipsToBounds = NO;
tools.tintColor = [UIColor colorWithWhite:0.305f alpha:0.0f]; // closest I could get by eye to black, translucent style.
// anyone know how to get it perfect?
tools.barStyle = -1; // clear background


NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:3];

// Create a standard refresh button.
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"share.png"] style:UIBarButtonItemStylePlain target:self action:@selector(shareClicked)];
//initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
[buttons addObject:bi];
[bi release];

// Create a spacer.
bi = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"scroll left.png"] style:UIBarButtonItemStylePlain target:self action:@selector(upClicked)];
//bi.width = 12.0f;
[buttons addObject:bi];
[bi release];

// Add profile button.
bi = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"scroll right.png"] style:UIBarButtonItemStylePlain target:self action:@selector(downClicked)];
//bi.style = UIBarButtonItemStyleBordered;
[buttons addObject:bi];
[bi release];

// Add buttons to toolbar and toolbar to nav bar.
[tools setItems:buttons animated:NO];
[buttons release];
UIBarButtonItem *twoButtons = [[UIBarButtonItem alloc] initWithCustomView:tools];
[tools release];
self.navigationItem.rightBarButtonItem = twoButtons;
[twoButtons release];
Was it helpful?

Solution

I had a similar issue.

In my case the .png file was erased from the project and from the project's working directory - for some reason. Consequentally it was not included in the Copy Bundle Resources anymore.

Strange, though, apparently it was still on the simulator. In my case it was even still on the debug device. But when building a boulde for ad-hoc distribution it was not in. As a result the full button (bar button item in the navigation bar) did not appear. Users were unable to invoke the action associated with it.

First I erased the app from the simulator. I tried both, erasing it from the simulator's gui and from the file system /Users//Library/Application Support/iPhone Simulator/5.0/Applications/(app id)/... . In both cases running the app on the simulatore re-installed the unused .png file and a number of other files that were intentionally deleted from my xcode project.

However, the final solution was to include the png file again in the xcode project and assign it to all relevant targets. In my case I was about to change the graphic anyway so I included the new file instead of the old one. But I am sure that this detail does not matter much.

Short version: 1. If your png file is still part of the project, then delete it. Delete ist from the project folder too, just to be save. 2. Re-include the png file to the project. 3. Create your build and try it on an empty device.

OTHER TIPS

Also ran into this issue where XCode Simulator showed a custom navigation right bar button but the device did not. The error was a weak property IBOutlet for the custom button. Check your IBOutlet @property. In my case the fix was simply changing the IBOutlet to: @property(nonatomic, retain) IBOutlet UIButton *customBtn;

In my case I had somehow deleted the reference to my custom image. Choosing the name again from the list of images fixed the problem.

enter image description here

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