Cómo agregar una label y una vista de image a una barra de herramientas y establecer las properties en código

Me gustaría mostrar una label ( UILabel y una vista de imágenes ( UIMageView ) en una barra de herramientas ( UIToolbar ). En Interface Builder, he agregado un elemento de button de barra ( UIBarButtonItem ) para cada una de estas vistas y he arrastrado una vista vacía ( UIView ) en cada uno de los elementos del button de barra. Consulte la captura de pantalla a continuación para ver la jerarquía.

introduzca la descripción de la imagen aquí

Supongo que cada una de estas vistas se ha convertido en customViews que debería poder acceder en código con

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

y luego acceder a la label o a la vista de la image con

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

Sin embargo, al ejecutar el código, mi aplicación se bloquea con el post de error: 'NSInvalidArgumentException', reason: '-[UIView customView]: unrecognized selector sent to instance .

¿Qué me perdí? ¿Cuál sería una mejor manera de crear las vistas en Interface Builder y acceder a sus properties en código?

¡Gracias!

Bien, creo que este es tu problema. En la línea de código:

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

De hecho, estás lanzando labelBarButtonItem en una UIView luego solicitando customView desde ella. Parece que estás lanzando customView pero no lo estás. Entonces intente usar este código:

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

El código anterior labelBarButtonItem la labelBarButtonItem saca el customView y lo customView . Luego, para get la label, puede acceder a ella mediante:

 UILabel *companyLabel = (UILabel*)[labelBarButtonView viewWithTag:tag];