我自定义的“条形按钮”项出现“导航项中不支持普通样式”警告


88

我将“ Round Rect Button”拖到右侧“ Bar Button Item”的位置,并将图像设置为“ Round Rect Button”。除警告“导航项目中不支持纯格式”外,其他所有方法均正常运行。即使我将Bar Button Item的样式选择为“ Bordered”,警告仍然存在。Xcode 4.2有什么问题?提前致谢!

附言 我用Round Rect Button自定义了许多Bar Button项,有时Xcode 4.2在Bar Button项上仅显示一个警告,有时在所有Bar Button项上显示警告。


1
我写了一篇关于此的博客文章:blog.mosheberman.com/…–
Moshe

不添加按钮,添加条形按钮项目。这是我的错
丹尼尔·斯普林格

Answers:


135

我能够通过手动编辑情节提要文件来消除这些错误,并在<navigationItem>元素中的“条形按钮”项上找到有问题的style =“ plain”条目。

更改自:

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

至:

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

这清除了警告...对或错。

这可能是一个骇人听闻的骇客,更值得关注的是我不是根本原因,也不是从整个文档中删除了不可见的条形按钮项。这是在遍历所有元素之后发现一些导航栏是空的(没有子项),并且可能是由于大量的复制和粘贴(cmd + c | v)继承而不是使用重复的(cmd + d)建立界面。尽管根本原因不是根本原因,但症状是没有解决要解决的文档“大纲视图”中的条项目。有时,Interface Builder的行为会给我带来细微的差别,而在轮廓视图中应该有东西的空容器中却有异味。好吧,现在对我来说。有时删除有问题的节点并重建可以解决最奇怪的问题。

警告:在尝试使用此脚本之前,请备份您的情节提要...版本控制是您的朋友...当您的情节提要完全关闭并且无法编译时,我不承担任何责任。您将获得的只是“我告诉过您!” 我几次学到了艰辛的方法,但是勤奋的源代码控制使我头疼。

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


24
在界面构建器中选择barbuttonitem,打开右侧的属性面板,并将bar button项的样式更改为“ Bordered”,将相同的差异应用于情节提要文件。所以这应该是安全的。
mash

感谢@mash的建议,我这样做的方式可怕地充满了潜在的痛苦和痛苦。
Hunter-Orionnoir,2015年

@ SpaceDog2感谢您的注意。我尚未升级,因此无法添加任何确认。无论如何我都会非常小心。我知道到目前为止,它对很多人都有帮助。我们会及时查看是否会停止提供帮助。
Hunter-Orionnoir,2015年

5
该解决方案在Xcode 7.1中对我来说非常理想。另外,您可以直接在情节提要中进行更改(将样式从“普通”更改为“有边框”),而不是直接编辑源代码,其结果与style="plain"从情节提要源代码中手动删除的结果完全相同。因此,对我来说,亨特的建议似乎合法。
Erik van der Neut

也可以查看dstudeba的答案,我什至不知道他所描述的是可能的。可能会为每个人节省一些手动编辑文件的痛苦。源代码控制是您的朋友,请大家放心。;)
Hunter-Orionnoir

31

万一您单击警告,而没有转到有问题的导航项目,请执行以下操作。(通过添加注释,以更安全的方式直观地表示猎人的答案)

在文件浏览器中,右键单击情节提要,然后选择 Open As Source Code

在此处输入图片说明

在源代码页中搜索“普通”,然后找到附加到导航项的那个。

在此处输入图片说明

要获取视图的名称,请在搜索栏中输入“场景”,然后单击后退搜索箭头以在视图上方的标签上搜索第一个实例。navigationItem

在此处输入图片说明

这是您的场景的名称,现在您可以Interface Builder - Storyboard使用上述右键单击方法将情节提要板视图改回,然后在场景菜单中选择场景,然后在其中选择Bar项。

在此处输入图片说明

转到“属性”检查器并将样式从更改PlainBordered

在此处输入图片说明


1
凉。我一定会在下次发生这种情况时尝试此操作。
Hunter-Orionnoir

13

通过在文档大纲中四处浏览,我停止了有关纯风格的警告。那是显示我的导航项目,在这2个Bar Button项目中,以及在每个Button中。令人讨厌的设置位于“条形按钮项”上。在属性检查器中,我将样式从“普通”更改为“完成”,并且警告消失了。注意:我正在使用XCode 5。


8

如果您使用的是故事板,请单击警告,它应该带您到有问题的导航项(我有两个问题的解决方案,一个带我去了另一个,但另一个没有)-更改样式并清理项目。

条形按钮样式设置为纯色


在上面的问题中,它实际上并没有带我去任何地方。我认为这是此特定问题的症结所在,导航员完全没有该项目,但dstudeba的回答有一个有趣的方法,好奇是否以不同的方式打开情节提要可以帮助人们。
猎人Orionnoir

这是最合适的答案。我已将样式更改为“边框”。
Andrej

6

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参考的“自定义外观”部分。


3
我有一个带有很多视图控制器和按钮的继承项目。我似乎无法哄骗XCode告诉我哪个按钮引起了警告。有什么提示吗?谢谢!
Olie 2013年

也许通过您的视图控制器和“找到” UIBarButtonItenStyle运行。通常是错误设置属性的地方
TimWhiting

1

在导航栏中,尝试使用UIBarButtonItem代替Round rect button并为其设置一个Image。


但是它不是我需要的UIBarButtonItem的样式。
陆元

1

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

错误消息似乎指向导航栏中的所有项目。


0

确定将情节提要中的所有条形按钮都设置为除普通内容之外的其他任何按钮之后,请确保执行git commit并删除派生数据。我花了很多时间试图弄清楚问题为何无法解决,并删除派生数据文件夹为我解决了问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.