0

私は1つのアプリケーションを開発しています。そのため、UINavigationBarのサイズを小さくする必要があります。そのために、以下のコードを使用します。

CGFloat navBarHeight = 10.0f;    
CGRect frame = CGRectMake(50.0f, 0.0f, 320.0f, navBarHeight);
[self.navigationController.navigationBar setFrame:frame];

しかし、次のページに移動すると、そのページのナビゲーションバーも変更されました。ただし、変更する必要があるのは1ページだけです。そして、戻るボタンを分離してナビゲーションバーの前に配置したいので、そのためにUINavigationBarの前に1つのボタンを配置しますが、アクションは実行しません。

それで、これを行う方法を教えてください。

前もって感謝します...

4

2 に答える 2

0

すべてのページでUINavigationバーのサイズを変更する必要があります。戻るボタンに関して、私はこの解決策を使用しました:

-(void)returnButton:(id)sender
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}
于 2012-04-06T12:13:27.590 に答える
0

注意する必要があるのは、NavigationControllerがビュー階層全体を管理することです。ナビゲーションコントローラーの高さのナビゲーションバーを変更し、ViewControllerBをそのナビゲーションコントローラーのスタックにプッシュするViewControllerAがある場合、同じナビゲーションバーを効果的に表示しています。高さをViewControllerBで元の高さに戻す必要があります。

「戻るボタンを分離してナビゲーションバーの前に配置する」とはどういう意味かわかりません。写真はありますか、それとも質問を明確にしていただけますか?

更新:あなたのコメントに基づいて、あなたが達成しようとしていることは可能ですが、悪い考えです。UINavigationControllerのnavigationBarは、画面の幅全体に広がります。このバーの幅を短くしてボタンを左側に表示するという技術的な実現可能性に関係なく、これは間違いなくHIGを侵害しており、標準のiOS機能を標準的に使用する必要があります。つまり、ナビゲーションバーは常にいずれかの方向でデバイスの幅にまたがる必要があります。標準の戻るボタンを別のボタンに置​​き換える場合は、leftNavigationItemを置き換えるだけで可能です

self.navigationItem.leftNavigationItem = <SomeUIBarButtonItem>;

おそらく、hidesBackButton=YESも設定する必要があります。

更新2:これを小さなXcodeプロジェクトでテストしましたが、ナビゲーションバーの幅を変更できます。ばかげているように見えますが、それは可能です。ただし、ペン先を使用してそのペン先にNavigationBarプロパティを設定する場合、ボタンをビューコントローラのビューに追加するときは、フレームのy値を負の数に設定して、ナビゲーションバーと一致させる必要があります。 。それでも、このボタンでのテキストまたはターゲット/アクションの設定は機能していないようです。ナビゲーションバーは、その幅をそれ自体のために予約する場合があります。ナビゲーションバーの設定をペン先から削除して再試行しても、それは実行されません。ナビゲーションバー(または、実際には、ナビゲーションコントローラー)の存在は、他の何かがその領域でタッチイベントを受信するのを妨げているようです。

于 2012-04-06T12:17:22.880 に答える