“导航项中不支持普通样式”警告我的自定义条形按钮项
Posted
技术标签:
【中文标题】“导航项中不支持普通样式”警告我的自定义条形按钮项【英文标题】:"Plain Style unsupported in a Navigation Item" warning with my customized Bar Button Item 【发布时间】:2012-06-12 08:04:49 【问题描述】:我将一个圆形矩形按钮拖动到右侧条形按钮项的位置,并将图像设置为圆形矩形按钮。一切正常,除了警告“导航项中不支持普通样式”。即使我将 Bar Button Item 的样式选择为“Bordered”,警告仍然存在。 Xcode 4.2 有什么问题?提前致谢!
附言。我使用圆形矩形按钮自定义了许多条形按钮项,有时 Xcode 4.2 在条形按钮项上仅显示一个警告,有时在所有条形按钮项上显示警告。
【问题讨论】:
我为此写了一篇博文:blog.mosheberman.com/… 不要添加按钮,添加条形按钮项。这是我的错误。 【参考方案1】:我能够通过手动编辑情节提要文件来消除这些错误,并在 <navigationItem>
元素中的条形按钮项目上找到有问题的 style="plain" 条目。
更改自:
<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">
收件人:
<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">
这清除了警告......对或错。
这可能是一个惊人的 hack,更大的问题是我没有从根本上导致它或从整个文档中删除不可见的条形按钮项。这是在逐个浏览所有元素并发现一些导航栏是空的(没有子级)并且可能发生在大量复制和粘贴(cmd + c | v)继承而不使用重复(cmd + d)构建界面。虽然根源不是根本原因,但症状是在要修复的文档“大纲视图”中没有显示栏项目。 Interface Builder 的行为有时让我印象深刻,而在大纲视图中应该有东西的空容器是一种气味。好吧,现在对我来说。有时删除有问题的节点并重建可以解决最奇怪的问题。
警告:在你尝试这个之前备份你的故事板......版本控制是你的朋友......当你的故事板完全被冲洗并且无法编译时,我不承担任何责任。你只会得到一个“我告诉过你!”我学习了几次困难的方法,但勤奋的源代码控制让我头疼。
编辑:将括号放在代码块中
【讨论】:
在界面生成器中选择 barbuttonitem,打开右侧的属性面板,将 bar button item 的样式更改为“Bordered”,将相同的差异应用于情节提要文件。所以这应该是安全的。 感谢@mash 的建议,我这样做的方式非常可怕,伴随着潜在的痛苦和折磨。 @SpaceDog2 感谢您的提醒。我还没有升级,所以我不能添加任何确认。无论如何,我会非常小心这种方法。我知道到目前为止它帮助了很多人。我们会及时看到它是否会停止提供帮助。 这个解决方案在 Xcode 7.1 中非常适合我。此外,您可以在情节提要本身中更改它(将样式从纯文本切换到有边),而不是直接编辑源代码,这与从情节提要源代码中手动删除style="plain"
具有完全相同的结果。所以,对我来说,亨特的这个建议似乎是合法的。
也查看 dstudeba 的回答,我什至不知道他所描述的是可能的。可能会为每个人节省一些手工编辑文件的痛苦和痛苦。源代码控制是你的朋友,每个人都安全。 ;)【参考方案2】:
如果您单击警告但没有转到有问题的导航项,请执行以下操作。 (添加了来自 cmets 的更安全方法的 Hunter 答案的可视化表示)
在文件浏览器中右键点击故事板并选择Open As Source Code
在源代码页面中搜索“plain”,找到附加到导航项的那个。
要获取视图的名称,请将“场景”放在搜索栏中,然后单击返回搜索箭头以搜索该标签上的第一个实例navigationItem
这里是你的场景的名字,你现在可以用上面描述的右键方法将你的故事板视图改回Interface Builder - Storyboard
,然后去选择场景菜单中的场景,和里面的栏项目。
转到属性检查器并将样式从 Plain
更改为 Bordered
【讨论】:
酷。下次遇到这种情况我一定会试试的。【参考方案3】:我在 Document Outline 中四处寻找,停止了关于 Plain Style 的警告。那是显示我的导航项,在这 2 个条形按钮项中,在每个按钮中。有问题的设置在条形按钮项目上。在其属性检查器中,我将 Style 从 Plain 更改为 Done,警告消失了。注意:我使用的是 XCode 5。
【讨论】:
【参考方案4】:如果您正在使用情节提要,然后单击警告,它应该会将您带到有问题的导航项(我有两个问题,一个带我到那里,另一个没有) - 更改样式并清理项目。
【讨论】:
在上面的这个问题中,它实际上并没有把我带到任何地方。我认为这是这个特定问题的症结所在,该项目完全从导航器中丢失,但 dstudeba 的答案有一个有趣的方法,如果以不同的方式打开故事板对人们有帮助,请好奇。 这是最合适的答案。我已将样式更改为 Bordered。【参考方案5】:backBarButtonItem
leftBarButtonItem
和 rightBarButtonItem
是 UINavigationItem
对象。 UINavigationItem
中没有 style
属性,所以这就是警告的原因。您应该以编程方式设置 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的“自定义外观”部分。
【讨论】:
我有一个带有很多视图控制器和按钮的继承项目。我似乎无法哄 XCode 告诉我哪个按钮导致了警告。有什么提示吗?谢谢! 可能会通过您的视图控制器运行并“找到”UIBarButtonItenStyle。这通常是错误设置属性的地方【参考方案6】:在导航栏中尝试使用 UIBarButtonItem 而不是圆形矩形按钮并为其设置图像。
【讨论】:
但是 UIBarButtonItem 的样式不是我需要的。【参考方案7】:在我的例子中,它是一个后向箭头的图像,设置为“普通”。
错误消息似乎是指导航栏中的所有项目。
【讨论】:
【参考方案8】:在您确定情节提要中的所有条形按钮都设置为非普通按钮后,请确保执行 git commit 并删除派生数据。我花了很长时间试图弄清楚为什么问题没有自行解决,并删除派生数据文件夹为我解决了问题。
【讨论】:
以上是关于“导航项中不支持普通样式”警告我的自定义条形按钮项的主要内容,如果未能解决你的问题,请参考以下文章