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

lu *_*uan 83 iphone xcode uibarbuttonitem uibarbuttonitemstyle ios

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

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

Hun*_*oir 129

我能够通过手动编辑storyboard文件来删除这些错误,并在<navigationItem>元素中的Bar Button项目中找到有问题的style ="plain"条目.

改变自:

<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">
Run Code Online (Sandbox Code Playgroud)

至:

<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

  • 选择界面构建器中的barbuttonitem,右侧打开属性面板,将条形按钮项的样式更改为"Bordered",将相同的diff应用于storyboard文件.所以这应该是安全的. (23认同)
  • 这个解决方案在Xcode 7.1中非常适合我.另外,不是直接编辑源代码,而是可以在storyboard本身中更改它(将样式从Plain切换为Bordered),这与仅从storyboard源手动删除`style ="plain"`的结果完全相同码.所以,对我来说,亨特的这个建议似乎是合法的. (5认同)

dst*_*eba 28

如果您单击警告并且未转到违规导航项,请执行以下操作.(通过添加评论的更安全的方法直观表示Hunter的答案)

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

在此输入图像描述

在源代码页中搜索"plain",并找到附加到Navigation Item的那个.

在此输入图像描述

要获取视图的名称,请在搜索栏中输入"scene",然后单击后退搜索箭头以搜索该标记上方的第一个实例.navigationItem

在此输入图像描述

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

在此输入图像描述

转到"属性"检查器并将样式更改PlainBordered

在此输入图像描述


Mar*_*ius 13

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


Rec*_*eel 7

如果你正在使用故事板,然后点击警告,它应该带你到违规导航项目(我有两个问题,一个把我带到另一个没有) - 改变风格和清理项目.

栏按钮样式设置为普通


Mat*_*Mat 5

backBarButtonItem leftBarButtonItem并且rightBarButtonItemUINavigationItem对象.没有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;
Run Code Online (Sandbox Code Playgroud)

适用于iOS 5+:

阅读UIBarButtonItem参考的"自定义外观"部分.

  • 我有一个继承的项目,有很多视图控制器和按钮.我似乎无法哄骗XCode告诉我哪个按钮导致警告.任何提示?谢谢! (3认同)