2013-07-18 11 views
7

スタンドアロンのXibファイルとしてビューを作成し、インスタンス化してサブビューとして追加するのが好きです。UINavigationBarとUIBarButtonItemを使った自動レイアウト

そうで、UINavigationBarで作業する場合、私が最初に私のカスタムビューを作成し、同じことを行うことができるように期待 - XIBから - その後、UIBarButtonItemにカスタムビューとして追加:

UIBarButtonItem *anItem = [[UIBarButtonItem alloc] initWithCustomView:_myCustomView]; 

次に、ナビゲーションバーに追加:

self.navigationBar.topItem.rightBarButtonItems = @[ anItem, anotherItem ]; 

これまでのところとても良いです。

ここで_myCustomViewは自動レイアウト(AL)を使用していますが、これは問題ではないと思いました。 そうではありません。私はすべてを試しました。何も働いていません。私は、ナビゲーションバーを持つコントローラのサブビューとしてカスタムビューを追加しようとしました。ビュー階層内の兄弟として、ALはそれをUINavigationBarの外の通常ビューとして扱うと考えます。

これも機能しませんでした。コントローラのupdateViewConstraintsが呼び出されましたが、適用されませんでした。ビューの最初のフレームは、CGRectZeroにとどまりました。 ALが、兄弟であっても、ビューがUINavigationBarの上にあるとみなし、レイアウトする必要がないと判断したかのようです。

もちろん、私はbringSubviewToFronttranslatesAutoresizingMaskIntoConstraintstranslatesAutoresizingMaskIntoConstraintsなどを試しました。後者は素敵を与えた:-layoutSubviewsを実行した後に必要な「自動レイアウトはまだ :

がキャッチされない例外により 「NSInternalInconsistencyException」、理由にアプリを終了します。 MyNavigationBarの -layoutSubviewsの実装でsuperを呼び出す必要があります。

だから、質問は、誰もがXIBからALを持つカスタムビューをロードし、成功裏にUIBarButtonItemcustomViewとしてこれを設定していますか?もしそうなら、どうですか?

+0

私はまだ実際にレーダーを提出していませんが、これも実行しました。これはiOS 6バグのようです。 UIBarButtonItemとそのビューをプログラムで作成すると同じ問題が発生します。 – Ryan

+0

この問題の解決策を見つけましたか? – Redwarp

+0

そのトピックに関するニュースはありますか?私はまだiOS 7で(ツールバーではあるが)同様の問題があると思います。 –

答えて

1

は、彼らが完全にサポートされない場合がありますので、内部に自動レイアウトベースのカスタムビューを使用して、UIViewから継承されませんiOS Autolayout and UIToolbar/UIBarButtonItems

UIBarButtonItemsの重複のように見えます。問題が解決されるまでプレ自動レイアウトを行う必要があるように思えます。私はバグを提出することをお勧めします。

編集:プレオートレイアウトのものでは、ビューのフレームを直接操作することを意味します。

関連する問題