I drag a Round Rect Button to the position of the right Bar Button Item, and set an image to the Round Rect Button. All works well, except the warning \"Plain Style unsuppor
backBarButtonItem
leftBarButtonItem
and rightBarButtonItem
are UINavigationItem
objects. There is no style
property in UINavigationItem
so this is the reason of the warning. You should set the barButtons programatically:
iOS 4:
UIButton *bt=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[bt setFrame:YourFrame];
//[bt setImage:[UIImage imageNamed:@"backBT"] forState:UIControlStateNormal];
[bt addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt];
self.navigationItem.leftBarButtonItem=leftButton;
For iOS 5+:
Read the "Customizing Appearance" section of UIBarButtonItem reference.
In my case it was an image of a back arrow, which was set to "Plain".
The error message appears to refer to all the items in the navigation bar.
In case you click on the warning and you don't go to the offending navigation item do the following. (visual representation of Hunter's answer with safer method from comments added in)
In the file browser right click on the storyboard and select Open As Source Code
In the source code page search for "plain", and find the one attached to a Navigation Item.
To get the name of the View, put "scene" in the search bar and click the back search arrow to search for the first instance on that tag above the navigationItem
Here is the name of your Scene, you can now change your Storyboard view back to Interface Builder - Storyboard
with the right click method described above, and then go to select the Scene in the scene menu, and the Bar Item inside it.
Go to the Attributes inspector and change the style from Plain
to Bordered
If you are using storyboard then click the warning and it should take you to the offending navigation item (I had two for the problem, one took me there the other did not) - change the style and clean the project.
I was able to remove these errors by manually editing the storyboard files and find the offending style="plain" entry on Bar Button items in the <navigationItem>
element.
Changed from:
<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">
To:
<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">
This cleared the warnings... right or wrong.
This may be a stupendous hack and the larger concern is I did not root cause it or remove the invisible bar button items from the overall document. This was after going through all the elements one by one and discovering some navigation bars were empty (without children) and likely occurred with the large amount of copy and paste (cmd+c|v) inheritance and not using duplicate (cmd+d) to build the interface. Although the source cause was not root caused, the symptom was the bar items did not show in the document "outline view" to be fixed. Interface Builder behavior strikes me as nuanced at times and an empty container where there should be something in an outline view is a smell. Well it is to me now. Sometimes deleting the offending node and rebuilding fixes the oddest issues.
WARNING: back up your storyboards before you try this... version control is your friend... I take no responsibility when your storyboard is completely hosed and wont compile. All you'll get is an "I told you so!" I learned the hard way a few times, but diligent source control saved me a headache.
EDIT: put brackets in code blocks
In the navigation bar try using UIBarButtonItem instead of Round rect button and set an Image for it .