非表示のデフォルト バーを備えたカスタム実装 (シンプルなボタンとラベル) を使用して、ストーリーボードを介して作成されたタブ コントローラーがあります。これはすべて期待どおりに機能し、さまざまなビューをナビゲートできます。ただし、いくつかのビューでは UIScrollView を使用する必要がありますが、タブバーコントロールをスクロールビューの一番下に移動したい場合は、それらにアクセスするには一番下までスクロールする必要があります。このような構成をどのように実装しますか? XCode 4.3、ARC、ストーリーボードを使用しています。
3 に答える
@MichaelFrederick は、質問に対する正しい技術的な回答を提供してくれました。ここで、より高いレベルの設計フィードバックを提供します。
これをしないでください。
あなたが説明したことは、信じられないほど混乱しているように聞こえます。の目的の 1 つUITabBar
は、現在の「モード」に関するコンテキストをユーザーに提供することです。それを非表示にすることで、ユーザーにこのコンテキスト情報を提供できなくなります。
また、ユーザーがモード (タブ) をすばやく切り替えたい場合、スクロールを強制していることも意味します。
スクロール ビュー (たとえば、大きな画像) に最大の画面領域が絶対に必要な場合は、代わりにモーダル ビュー コントローラーを提示することを検討してください。これにより、必要なものが得られますが、面倒なサブクラス化、カスタム タブ (常に正しく動作するとは限りません)、または使いやすさの問題はありません。
タブを含む UIView の独自の実装を作成し、それを UIScrollView の下部に配置する必要があります。
UITabBarController は、ウィンドウのルートである必要があります。つまり、UITabBarController 内の UIViewController には UIScrollView を含めることができますが、UITabBarController を別の UIViewController 内 (または UIScrollView 内) に配置することはできません。
UITabBarController クラスリファレンスから:
タブ バー インターフェイスを展開する場合は、このビューをウィンドウのルートとしてインストールする必要があります。他のビュー コントローラーとは異なり、タブ バー インターフェイスは別のビュー コントローラーの子としてインストールしないでください。
私はコンラッドに完全に同意し、マイケルはすべてにおいて正しいですが、独自のカスタム タブ バーを作成する必要はないと思います。UITabBar
を使用せずに直接使用できるはずですUITabBarController
。
コンラッドは完全に正しいので、ドキュメントを読む以外に、それを行う方法についてのヒントはこれ以上提供しません。とても悪いデザインです。