2009-06-24 11 views
13

私のiPhoneアプリケーションにUINavigationControllerを追加するのに奇妙な問題があります。次のように私は、コントローラを追加します。iPhone:UINavigationControllerの上部に奇妙なスペースがあります

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil]; 

myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController]; 

UIView *finalView = myeNavigationViewController.view; 

[self.view addSubview:finalView]; 

すべては私がステータスバーとUINavigationControllerのタイトルバーの間に私のビューの上部に奇妙な空白を取得除き予定通りに動作するようです。 alt text http://www.andrewskinner.name/problem.png

私はオンラインで検索しましたが、何を検索するのか分かりません。誰にもこの問題がありましたか?あなたは私の助けの方向に向けることができますか?

ありがとうございます。

答えて

0

多分あなたは何とか2つのUIView、ステータスバーを持つそれぞれ を手に入れました。 xibを確認してください。

11

ライン

UIView *finalView = myeNavigationViewController.view; 

は、コードに何を追加していますか?私は境界にフレームを設定するこの

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil];  
myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController]; 
[navigationController.view setFrame: [self.view bounds]]; 
navigationController.delegate = self; 
[self.view addSubview:[navigationController view]]; 

を行う傾向にある。..
プラスそれはnavigationController myNavigationControllerを参照していないとして、それが間違っています - あなたが最初のUIViewにそれを割り当てずに、直接ビューを追加することができますように、それは冗長ですあなたが聞いていたトップの空白も削除されます。

2

問題はUINavigationControllerは、理想的には、UIWindowの直接のサブビューでなければならないことです。それは、それだけで位置と大きさになります。 UIWindowサブビューの別のカスタムビューにUINavigationControllerを追加する場合、UIWindowにステータスバーが表示されるかどうかを考慮して、このカスタムビューの位置とサイズを考慮する必要があります。

私の提案は、UINavigationControllerのサブクラスとして、カスタムビューを作成することです:

mySubClass_NavigationController*nav=[[mySubClass_NavigationController alloc] initWithRootViewController:viewController ]; 

[myUIWindow addSubview:nav.view]; 

とmySubClass_NavigationControllerの内側に、あなたは(そのコントローラがあるものは何でも)あなたの自己にあなたが今やっているすべてのカスタマイズを行うことができます。

2

私はこれもしばらくの間、オペアンプと非常によく似たコードを使って苦労しました。また、ナビゲーションコントローラの上に白いバーがありました。

私の問題は、UINabControllerをUITabControllerのビューとして追加するときに発生しました。私の場合のスペースは、ステータスバーを考慮したUINavigationControllerのUINavigationBar部分によって引き起こされました。実際には、UINavigationControllerで表示しようとしていたビューの一部が重なっていました。

これは私のUITabBarControllerビューコントローラの1つでloadViewで終了したコードです。

SomeUITableViewController *screenList = [[SomeUITableViewController alloc] init]; 

UINavigationController *navController = [[UINavigationController alloc] 
             initWithRootViewController:screenList]; 

CGRect frame = [[navController navigationBar] frame]; 

frame.origin.y = 0; // Was 20, set to 0 to not take into account the status bar. 

[[navController navigationBar] setFrame:frame]; 

[self setView:[navController view]]; 

さらに詳しい情報はhttp://discussions.apple.com/message.jspa?messageID=7890362です。

1

IBには、「プッシュオンの隠しボトムバー」と呼ばれる不明なプロパティがあります。ただそれをチェックしてください。それは私の問題を解決しました。

関連する問題