8

Ich habe einen Stapel von drei VCs, die durch einen Navigationscontroller koordiniert werden und eine Navigationsleiste verwenden. Auf dieser Navigationsleiste in jedem VC, habe ich die gleiche Taste (a 'Logout' Taste) als Element rechts bar Taste:ios navigation bar right button artikel verschiebt, wenn neue Ansicht Controller drücken

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

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

So jede View-Controller diese Logout-Button in der Navigationsleiste hat. Wenn ich einen dieser Controller auf den Navigationsstapel drücke, werden die neuen View Controller wie erwartet geladen, alles wird angezeigt und funktioniert ordnungsgemäß, aber direkt nachdem der neue View Controller angezeigt wird (nachdem die Animation beendet ist), verschiebt sich der Logout Button um 3px zum Recht.

Ich habe versucht, die Schaltfläche vor dem Drücken der VC, in den Init-Methoden der VC, in der ViewDidLoad und ViewDidAppear aber immer noch das gleiche Verhalten. Ich kann diese Verschiebung nicht loswerden.

Was ist seltsam ist, dass die Schaltfläche zurück verschwindet und wieder erscheint, wenn die neue VC (mit der Standard-Animation), aber die Schaltfläche "Abmelden" scheint an Ort und Stelle bleiben und nur nach der Animation nach rechts verschieben. Auch die Schrift auf den Schaltflächen ist nicht die Standardschrift, sondern eine der Systemschriftarten (Helvetica light), die damit verwandt sein kann.

Irgendwelche Ideen, warum das passiert?

+0

Es ist, weil ich nicht die Standardschriftart verwende. Irgendwie, wenn der Knopf mit einer anderen Schriftart auf den Bildschirm gerendert wird, muss sein Rahmen neu berechnet werden - oder das ist meine beste Schätzung. –

+0

Ich habe das gleiche Problem - hast du es behoben? –

Antwort

0

Versuchen Aufruf

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem; 

Auch was ist Ihre Logout-Button ist es die richtige Klasse? Vielleicht ein bisschen mehr Code?

1

Ich hatte das gleiche Problem. Dies liegt daran, dass Ihr rootviewcontroller nicht gesetzt ist. Legen Sie die Hauptseite oder die erste Seite fest, auf der Ihre erste Navigationsleiste als rootviewcontroller erstellt werden soll. Von dort [self.navcontroller] pushviewcontroller ...].