“自定义样式不支持导航项目”警告与我的自定义栏按钮项

时间:2012-06-08 09:00:58

标签: iphone ios xcode uibarbuttonitem uibarbuttonitemstyle

我将Round Rect按钮拖动到右侧Bar Button项的位置,并将图像设置为Round Rect Button。除警告“导航项目中不支持普通样式”外,一切正常。即使我选择条形按钮项的样式为“有边框”,警告仍然存在。 Xcode 4.2有什么问题?提前谢谢!

聚苯乙烯。我使用圆形矩形按钮定制了许多条形按钮项目,有时Xcode 4.2仅显示条形按钮项目上的一个警告,有时显示所有条形按钮项目的警告。

8 个答案:

答案 0 :(得分:120)

我能够通过手动编辑故事板文件来删除这些错误,并找到有问题的样式=&#34; plain&#34;在<navigationItem>元素中的Bar Button项目上输入。

更改自:

<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">

要:

<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">

这清除了警告......是对还是错。

这可能是一个惊人的黑客,更大的担忧是我没有根本原因或从整个文档中删除隐形栏按钮项目。这是在逐个浏览所有元素之后发现一些导航条是空的(没有子级),并且可能发生了大量的复制和粘贴(cmd + c | v)继承并且没有使用重复(cmd + d)构建界面。虽然源根本原因不是根源造成的,但症状是文件中没有显示条形项目&#34;大纲视图&#34;等待修复。界面生成器的行为有时会让我觉得细微之处,一个空的容器,在大纲视图中应该有一些东西是气味。嗯现在对我来说。有时删除违规节点并重建可以解决最奇怪的问题。

警告:在您尝试此操作之前备份您的故事板...版本控制是您的朋友...当您的故事板完全被冲洗并且不会编译时,我不承担任何责任。所有你得到的都是&#34;我告诉过你了!&#34;我几次学到了很多困难,但勤奋的源代码控制使我头疼。

编辑:将括号放在代码块中

答案 1 :(得分:26)

如果您点击警告并且没有进入违规导航项,请执行以下操作。 (用添加的评论中更安全的方法直观表示亨特的答案)

在文件浏览器中右键单击故事板并选择Open As Source Code

enter image description here

在源代码页中搜索&#34; plain&#34;,找到附加到导航项的那个。

enter image description here

要获取视图的名称,请输入&#34; scene&#34;在搜索栏中单击后退搜索箭头以搜索该标记上的第一个实例上面 navigationItem

enter image description here

以下是场景的名称,您现在可以使用上述右键单击方法将故事板视图更改回Interface Builder - Storyboard,然后转到场景菜单中选择场景,并选择里面的栏项目它

enter image description here

转到“属性”检查器,将样式从Plain更改为Bordered

enter image description here

答案 2 :(得分:13)

我通过在文档大纲中戳了一下,停止了关于普通风格的警告。那是显示我的导航项目,并在那2个条形按钮项目中,并在每个按钮内。违规设置在条形按钮项目上。在其属性检查器中,我将Style从Plain更改为Done,警告消失了。注意:我使用的是XCode 5.

答案 3 :(得分:7)

如果你正在使用故事板,那么点击警告,它会带你到违规的导航项目(我有两个问题,一个带我去,另一个没有) - 改变风格并清理项目。

Bar Button Style set to plain

答案 4 :(得分:5)

backBarButtonItem leftBarButtonItemrightBarButtonItemUINavigationItem个对象。 style中没有UINavigationItem属性,因此这就是警告的原因。您应该以编程方式设置barButtons:

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;

对于iOS 5 +:

阅读UIBarButtonItem reference的“自定义外观”部分。

答案 5 :(得分:1)

在导航栏中尝试使用UIBarButtonItem而不是Round rect按钮并为其设置图像。

答案 6 :(得分:1)

在我的情况下,它是一个后箭头的图像,设置为“普通”。

错误消息显示为引用导航栏中的所有项目。

答案 7 :(得分:0)

在确定故事板中的所有条形按钮设置为除了普通文件之外的任何内容之后,请确保执行git提交并删除派生数据。我花了很长时间试图找出问题为什么不能自行修复,并删除派生数据文件夹为我修复了它。