ナビゲーション コントローラーを介して調整され、ナビゲーション バーを利用する 3 つの VC のスタックがあります。このナビゲーション バーの各 VC に、同じボタン (「ログアウト」ボタン) を右バー ボタン項目として追加しました。
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には、ナビゲーションバーにこのログアウトボタンがあります。これらのコントローラーのいずれかをナビゲーション スタックにプッシュすると、新しいビュー コントローラーが期待どおりに読み込まれ、すべてが正しく表示されて機能しますが、新しいビュー コントローラーが表示された直後 (アニメーションの終了後)、ログアウト ボタンが約 3px 移動します。右。
VC をプッシュする前に、VC の init メソッド、viewDidLoad および viewDidAppear にボタンを追加しようとしましたが、それでも同じ動作です。私はこのシフトを取り除くことができないようです。
奇妙なのは、新しい VC を押すと (デフォルトのアニメーションを使用して) 戻るボタンが消えて再び表示されることですが、「ログアウト」ボタンは所定の位置にとどまり、アニメーションの終了後に右に移動するだけのようです。また、ボタンのフォントはデフォルトのフォントではなく、システム フォントの 1 つ (Helvetica light) が関係している可能性があります。
なぜこれが起こっているのかについてのアイデアはありますか?