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 に答える