2

我想在工具栏 ( ) 上显示一个标签 (UILabel和一个图像视图 ( ) 。在 Interface Builder 中,我为每个视图添加了一个栏按钮项 (条形按钮项目。请参阅下面的屏幕截图以了解视图层次结构。UIMageViewUIToolbarUIBarButtonItemUIView

在此处输入图像描述

我假设这些视图中的每一个都已成为customViews我应该能够在代码中访问的

UIView *labelBarButtonView = (UIView*)labelBarButtonItem.customView;

然后访问标签或图像视图

UILabel *companyLabel = (UILabel*)[labelBarButtonItem.customView viewWithTag:tag];

但是,在运行代码时,我的应用程序崩溃并显示错误消息:'NSInvalidArgumentException', reason: '-[UIView customView]: unrecognized selector sent to instance.

我错过了什么?在 Interface Builder 中创建视图并在代码中访问其属性的更好方法是什么?

谢谢!

4

1 回答 1

1

好吧,我认为这是你的问题。在代码行中:

UIView *labelBarButtonView = (UIView*)labelBarButtonItem.customView; 

您实际上是在向它labelBarButtonItem发出UIView请求customView。看起来你会铸造customView,但你不是。所以尝试使用这段代码:

UIView *labelBarButtonView = (UIView*)((UIBarButtonItem *)labelBarButtonItem.customView);

上面的代码将labelBarButtonItem拉出customView然后种姓。然后要获取标签,您可以通过以下方式访问它:

UILabel *companyLabel = (UILabel*)[labelBarButtonView viewWithTag:tag];
于 2013-02-10T01:10:51.850 回答