スタンドアロンの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
の上にあるとみなし、レイアウトする必要がないと判断したかのようです。
もちろん、私はbringSubviewToFront
、translatesAutoresizingMaskIntoConstraintstranslatesAutoresizingMaskIntoConstraints
などを試しました。後者は素敵を与えた:-layoutSubviewsを実行した後に必要な「自動レイアウトはまだ :
がキャッチされない例外により 「NSInternalInconsistencyException」、理由にアプリを終了します。 MyNavigationBarの -layoutSubviewsの実装でsuperを呼び出す必要があります。
だから、質問は、誰もがXIBからALを持つカスタムビューをロードし、成功裏にUIBarButtonItem
にcustomView
としてこれを設定していますか?もしそうなら、どうですか?
私はまだ実際にレーダーを提出していませんが、これも実行しました。これはiOS 6バグのようです。 UIBarButtonItemとそのビューをプログラムで作成すると同じ問題が発生します。 – Ryan
この問題の解決策を見つけましたか? – Redwarp
そのトピックに関するニュースはありますか?私はまだiOS 7で(ツールバーではあるが)同様の問題があると思います。 –