2011-10-21 34 views
2

MonoTouch 2.8とその他の関連するアップデートでiOS 5にアップグレードしました。私はビューに設定された2つの異なるXIBを持つUITabBarControllerを持つUIViewControllerを持っています。また、UITabBarControllerにコンセントがあります。私はのviewDidLoadでやっていたことは、私はタブバーのビューでUIViewControllerHierarchyInconsistency例外を取得していますのiOS 5へのアップグレードを今すぐUIViewControllerHierarchy MonoTouchでの不一致

this.View = this.TabBar.View; 

です。私は

this.View.AddSubview(this.TabBar.View); 

または

this.View.Add(this.TabBar.View); 

を行うことができますし、例外が起こって停止します。しかし、問題は、私のタブバーが画面の下部に配置され、画像の一部のみが表示され、関連するテキストを見ることができないということです。検索では、Objective-Cの例がいくつか見つかりました。これらの例は、サブビュールートを使用しているように見えますが、これは役に立ちません。何か案は?

答えて

3

iOS4でサポートされているパターンは、内部的な(View ControllerのViewプロパティ)を取得してView Controllerを接続し、別のView Controllerのビュー階層に追加したという悪い考えでした。これは醜いだけでなく、ビュー階層についてのあらゆる種類の質問を提起しました。

Appleはまだ基本パターンをサポートしていますが、上級ユーザーはサポートされなくなり、新しいViewController格納装置の設定を使用する必要があります。これらの無効な使用は例外として発生します。

WWDC 2011プレゼンテーションでは、セッション102 - 「UIViewController包含の実装」を参照してください。

主な変更点は、あなたのメインビューコントローラのために、画面全体を占有します一つは、古いを変更されています

window.AddSubview (myViewController.View); 

へ:他の人のために

window.RootViewController = myViewController 

、あなたが使用します新しいAPI:

currentContainer.AddChildViewController (myOtherViewController); 

あなたの場合、新しいViewControllerをあなたのタブに追加していますO最初のタブにあなたのビューコントローラを追加するため、このような何か:

myTabBar.ViewControllers [1].AddChildViewController (myFancyController) 
+0

私は私の問題の一部は、私は考えていないメインウィンドウの外でUITabBarControllerを使用しようとしているということかもしれないと思うがサポートされています。私は、メインページ自体はしていないが、タブを持つインテリアページをアプリケーションに持っていたい。これが私がthis.View = this.TabBar.Viewを設定した理由で、内部ページのタブバーを取得できるようになりました。最近の読書は、私は私がやろうとしているようにタブバーを使用することを許可されていない考えています。それが正しいかどうか?あなたの指導に感謝します。 –

+0

右、あなただけのウィンドウに割り当てるのではなく、PresentModalViewControllerを使用する必要があります。 –

+0

は、私は意図した使用に対してのようですので、内部UITabBarControllerを取り出す終わりました。ナビゲーションコントローラのツールバーを使用してオプションを表示し、切り替えを許可しました。 miguel.de.icaza @ –