2017-12-29 45 views
0

私は、UICollectionViewとUIToolbarを含むUICollectionViewControllerを持っています。 UIToolbarをUICollectionViewの下に配置したいと考えています(画面の一番下)。UINavigationControllerなしでUICollectionViewの下にUIToolbarを配置することはできますか?

私が今使っているのは、画面の一番下まで来るUICollectionViewと、zorderの上に置かれたUIToolbarです。下の図のコレクションビューはツールバーの下にあります。

Toolbar on top of a CollectionViewController

私はこのwith a NavigationControllerを行うことができますことを理解し、私もそのナビゲーションコントローラがドリルダウン動作のためのものです読んだことがあります。私は望んでいません - このツールバーの項目は必ずしもビューを変更するとは限りません。また、NavigationControllerがコードを必要以上に複雑にするようです。

私のUIToolbarはプログラムによって追加されています。私はストーリーボードにも追加しようとしましたが、私の見解にツールバーを配置する方法がわかりません。これが私の絵コンテです:

enter image description here

私はビューにツールバーをドラッグすることはできませんし、私はこれを実行するとストーリーボードのツールバーが表示されません。

このquestion/answerは、ツールバーが正しい位置にスナップできるように見えるか、スクロールビューを「サイズ変更」することができますが、この動作が表示されません。

答えて

1

UICollectionViewControllerを作成した場合は、UICollectionViewがメインビューであるため、その下にあるものを上に置くことができないため、UIToolbarをビューにドラッグできません。

代わりに、UICollectionViewDataSourceおよびUICollectionViewDelegateプロトコルに準拠するUIViewControllerを作成する必要があります。それはメインビューとしてUIViewを持ち、UICollectionViewとUIToolbarを追加して必要に応じて配置することができます。 UICollectionViewのデータソースとデリゲートをUIViewControllerにリンクすることも忘れないでください。

+0

ありがとうございました。私はこれを行い、音が痛いほどではなかった。 – galactikuh

+0

ちょうど、私はこのアプローチで1つの問題を見つけました。埋め込まれたUICollectionView.layoutSubviewメソッドが呼び出される前に* UIViewController.viewDidLayoutSubviewsが呼び出されたようです。おそらくコントローラーはその直後のビューのみに注意を払っています(ただし、関数の名前は不適切です)。collectionViewにはUICollectionViewControllerがないため、このイベントをキャプチャする場所が明確ではありません。 – galactikuh

+0

ただし、UIViewController.viewDidLayoutSubviewsでUICollectionView.setNeedsLayoutとUICollectionView.layoutIfNeededを呼び出して、その時点でUICollectioView.layoutSubviewを発生させることができます。 –

関連する問題