ios - item - uinavigationcontroller programmatically swift




Symbolleisten-Schaltflächen blinken(schnell ausblinken), wenn der Ansicht-Controller animiert wird (2)

Wenn ich einen View-Controller drücke, blenden meine Symbolleisten-Schaltflächen aus und dann wieder mit der neuen Ansicht. Das Problem ist, dass ich die gleichen Tasten in der nächsten Ansicht als die vorherigen habe, so dass es aussieht, als ob die Tasten beim Wechseln des Bildschirms schnell blinken. Meine Frage ist, ob dies vermieden werden kann, indem das Ausblenden von Symbolleistenschaltflächen für den Navigationscontroller beim Drücken auf eine neue Ansicht deaktiviert wird oder ob die Symbolleiste so an den Navigationscontroller gebunden werden kann, dass sie für alle Ansichten gleich ist. Der letzte Vorschlag seit ich gesehen habe, dass meine Navigationsleisten-Buttons beim Drücken eines neuen Bildschirms nicht ausgeblendet werden.


Ich bin überrascht, dass dir niemand geantwortet hat. Ich habe gerade mit diesem Problem konfrontiert, und hier ist eine Lösung, die ich gefunden habe.

  1. Unterklasse deinen Navigationscontroller

  2. Überschreiben Sie Push / Pop-Methoden

-(UIViewController*)popViewControllerAnimated:(BOOL)animated
{
    self.navigationBarHidden = YES;
    UIViewController *vc = [super popViewControllerAnimated:animated];
    self.navigationBarHidden = NO;
    return vc;
}

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    self.navigationBarHidden = YES;
    [self pushViewController:viewController animated:animated];
    self.navigationBarHidden = NO;
}

Es hat den Trick für mich getan.


Ich weiß, dass diese Frage alt ist, aber es gibt eine einfache Lösung: Setzen Sie beide Navigationselemente des Controllers auf das gleiche Element in der Leiste, und es wird nicht animiert. Z.B:

UIBarButtonItem* item = [[UIBarButtonItem alloc] initWith...];
viewController1.rightBarButtonItem = item;
viewController2.rightBarButtonItem = item;

Wenn Sie jetzt viewController2 nach dem Anzeigen von viewController1 drücken, wird das Navigationselement nicht animiert.







uitoolbar