[UIBarItem setTitle:]:发送到实例的无法识别的选择器

时间:2013-04-03 18:50:55

标签: ios objective-c runtime-error uitoolbar unrecognized-selector

我试图给我的UIToolBar一个标题,但是当我尝试添加一个带有title属性的UIBarItem时,我得到了这个错误。我的代码:

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

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

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

4 个答案:

答案 0 :(得分:3)

我认为问题在于,UIBarItemUIBarButtonItemUITabBarItem抽象超类

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

  

UIBarItem是一个抽象超类,用于添加到屏幕底部显示的栏中的项目。 ...

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

答案 1 :(得分:0)

我得到了同样的错误,尝试将对象设为按钮而不仅仅是项目。这段代码对我来说很好

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

如果您尝试为工具栏添加标题,请使用标题创建UILabel并将其添加为子视图。

答案 2 :(得分:0)

来自Apple's documentation

  

标题

     

项目上显示的标题。

@property(nonatomic, copy) NSString *title
     

讨论:您应该在将项目添加到a之前设置此属性   酒吧。默认值为nil。

     

可用性:适用于iOS 2.0及更高版本。

所以这个标题确实可以设定。你确定它是UIBarItem类显示为错误消息的一部分吗?可能是内存管理问题,如果没有,可能是UIKit中的错误(非常不可能)

答案 3 :(得分:-1)

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