8

ナビゲーション コントローラーを介して調整され、ナビゲーション バーを利用する 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) が関係している可能性があります。

なぜこれが起こっているのかについてのアイデアはありますか?

4

2 に答える 2

1

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

于 2012-09-20T16:48:32.787 に答える
0

電話してみる

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem;

また、ログアウトボタンは何ですか?それは正しいクラスですか? おそらくもう少しコードですか?

于 2012-08-01T19:59:27.920 に答える