8

ナビゲーションコントローラを介して調整された3つのVCのスタックがあり、ナビゲーションバーを使用しています。このナビゲーションバーで、各VCで、私は右のバーボタンアイテムとして同じボタン(「ログアウト」ボタン)を追加しました:新しいナビゲーションコントローラをプッシュすると、iosナビゲーションバーの右ボタン項目が移動する

UIBarButtonItem *logoutButton = 
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"") 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(logout)]; 

[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton]; 
[[self navigationController] pushViewController:categoriesViewController animated:YES]; 

したがって、各ビューコントローラは、ナビゲーションバーで、このログアウトボタンがあります。これらのコントローラのいずれかをナビゲーションスタックにプッシュすると、新しいView Controllerがロードされ、すべてが表示され、正しく機能しますが、新しいView Controllerが表示された直後(アニメーションが終了した後)にログアウトボタンが約3px右。

私は、VCのinitメソッドで、viewDidLoadとviewDidAppearでVCを押す前にボタンを追加しようとしましたが、それと同じ動作です。私はこの変化を取り除くことはできないようです。

新しいVCを(デフォルトのアニメーションを使用して)プッシュすると、戻るボタンが消えて再び表示されますが、[ログアウト]ボタンはそのまま残り、アニメーションが終了すると右に移動します。また、ボタン上のフォントはデフォルトのフォントではなく、システムフォント(Helvetica light)の1つが関連している可能性があります。

これはなぜ起こっているのですか?

+0

私はデフォルトのフォントを使用していないためです。どういうわけか、ボタンを別のフォントで画面にレンダリングすると、そのフレームを再計算する必要があります。これが私の推測です。 –

+0

私はこの同じ問題を抱えています。 –

答えて

0

はまた

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem; 

あなたのログアウトボタンが何であるかを呼び出して試してみてください、それが正しいクラスですか?おそらくもう少しコードですか?

1

私は同じ問題を抱えていました。 rootviewcontrollerが設定されていないためです。メインページまたは最初のナビゲーションバーがrootviewcontrollerとして生成される最初のページを設定します。そこから[self.navcontroller] pushviewcontroller ...]。

関連する問題