0

我试图给我的UIToolBar一个标题,但是当我尝试添加一个具有标题属性的UIBarItem时,出现此错误。我的代码:[UIBarItem setTitle:]:发送到实例的无法识别的选择器

UIBarItem *title = [[UIBarItem alloc] init]; 
title.title = @"My Title"; 

[toolBar setItems:@[cancel, title, ok]]; 

我已经检查UIBarItem官方文档,它确实有一个完全有效的“title”属性。我在这里做错了什么?

+0

我不确定,试试把变量名改为别的。 – 2013-04-03 18:54:20

回答

3

我认为问题是,UIBarItem抽象超的UIBarButtonItemUITabBarItem

也许该方法只是在头文件中声明并且未实现,或者抽象实现调用-doesNotRecognizeSelector:

UIBarItem是一个抽象超类,用于添加到出现在屏幕底部的横条的项目。 ...

对于-[UIToolbar items] UINavigationBar -[UINavigationItem (left|right)BarButtonItems],你必须使用使用UIBarButtonItem

+0

对于任何使用UINavigationBar的人来说,它确实不喜欢UIBarButtonItem(无法识别的选择器)。所以请尝试一个UINavigationItem。 – zakdances 2013-04-03 20:41:42

+0

@yourfriendzak你是对的,这是不明确的。 – Tricertops 2013-04-04 09:05:56

-1

我相信你应该使用initWithTabBarSystemItem:tag:initWithTitle:image:tag:来初始化你的UIBarItem。

+0

不是。[官方文档说的相反。](http://developer.apple.com/library/ios/documentation/uikit/reference/UIBarItem_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40007520 -CH3-SW20) – 2013-04-03 18:56:40

+0

对不起,我在看UITabBarItem。 UIBarItem被记录为抽象超类。 – 2013-04-03 18:59:57

+0

没问题,这是一个可以理解的错误:) – 2013-04-03 19:00:34

0

我得到了同样的错误,请尝试使对象成为一个按钮而不是一个项目。此代码工作得很好,我

UIBarButtonItem *title = [[UIBarButtonItem alloc] init]; 
[title setTitle:@"My Title"]; 

如果你想给工具栏标题,让一个UILabel的标题,并将其添加作为一个子视图。

+0

这两个调用是完全等效的。 – 2013-04-03 18:59:16

+0

我和他的区别在于他是'UIBarItem',我的是'UIBarButtonItem'。我试了一下,他的代码没有工作,当我测试它的时候它工作。 – 2013-04-03 19:00:23

+0

但是OP想要一个普通的'UIBarItem',不是吗? – 2013-04-03 19:02:19

0

Apple's documentation

标题

标题上显示的项目。

@property(nonatomic, copy) NSString *title 

讨论:您应该在将项目添加到 栏之前设置此属性。默认值是零。

可用性:Available in iOS 2.0及更高版本。

所以这个标题确实可以设置。你确定它是UIBarItem类作为错误信息的一部分显示吗?可能是内存管理问题,或者如果不是,则可能是UIKit (极不可能)的错误

相关问题