10 Stimmen

Hinzufügen der Schaltfläche "Zurück" zur Navigationsleiste

Ich habe eine Navigationsleiste zu einem UIViewController hinzugefügt. Sie wird nur von einem anderen UIViewController angezeigt. Ich hätte gerne einen linken Zurück-Button, der ähnlich wie ein Pfeil geformt ist, genau wie der normale Zurück-Button der Navigationsleiste. Es scheint, dass ich nur einen Leistenknopf durch IB hinzufügen kann. Ich vermute, dass der Zurück-Button programmgesteuert hinzugefügt werden muss. Haben Sie Vorschläge, wie ich das machen soll?

Aktuell schiebe ich im RootController einfach ein anderes UIViewController (viewB) durch ein einfaches AddSubView. In viewB möchte ich die Navigationsleiste anzeigen. Die App basiert auf der Ansicht und nicht auf einem Navigationscontroller.

13voto

Alex Reynolds Punkte 93906

Wenn Sie einen Navigationscontroller verwenden:

MyViewController *_myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[[self navigationController] pushViewController:_myViewController animated:YES];
UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:@"Zurück" style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = _backButton;
[_backButton release], _backButton = nil;
[_myViewController release], _myViewController = nil;

Wenn Sie keinen Navigationscontroller verwenden, schauen Sie sich die Three20-Stil-Komponenten an, um benutzerdefinierte Symbolleisten-Schaltflächen zu erstellen.

0 Stimmen

Du musst es an den Code für dein spezielles Projekt anpassen. Du könntest deine Frage bearbeiten und relevante Code-Schnipsel einfügen, wenn du dich in deinem ersten View-Controller befindest und deinen zweiten View-Controller aufrufst.

0 Stimmen

Ich würde lieber von Drittanbieter-Frameworks fernbleiben. Alles, was ich brauche, ist eine Schaltfläche hinzuzufügen, die die Form einer normalen Zurück-Schaltfläche hat. Wenn das nicht möglich ist, werde ich einfach einen "Fertig" -Schaltflächenstil oder etwas Ähnliches verwenden.

0 Stimmen

Apple hat keine Zurück-Pfeil-Schaltfläche verfügbar, außer für die Navigation. Sie müssen entweder Ihre eigene benutzerdefinierte Schaltfläche verwenden, eine Option von Drittanbietern oder einen anderen Schaltflächenstil.

7voto

Hassan Rasheed Punkte 71

Ich habe es folgendermaßen gemacht

Im Methode viewDidLoad habe ich diesen Code:

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 41)];
    navBar.delegate = self;

    UINavigationItem *backItem = [[UINavigationItem alloc] initWithTitle:@"Zurück"];
    [navBar pushNavigationItem:backItem animated:NO];
    [backItem release];

    UINavigationItem *topItem = [[UINavigationItem alloc] initWithTitle:@"Ihr Titel"];
    [navBar pushNavigationItem:topItem animated:NO];
    topItem.leftBarButtonItem = nil;
    [topItem release];

    [self.view addSubview:navBar];
    [navBar release];

Dann fügen Sie die Konformität zum UINavigationBarDelegate-Protokoll im Header hinzu und implementieren Sie die Delegatenmethode folgendermaßen:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item
{
    // Wenn Sie den präsentierten Controller abweisen möchten, können Sie dies hier oder in der Methode btnBackClicked tun

    return NO;
}

0 Stimmen

Hast du es in einer App verwendet, die du an Apple geschickt hast? Wenn ja, haben sie es genehmigt?

0 Stimmen

Ja, es wird keine private API in diesem Ansatz verwendet.

0voto

Wael Showair Punkte 3063

Ein weiterer Ansatz zur Lösung dieses Problems besteht darin, die items-Eigenschaft für die Navigationsleiste zu setzen, anstatt die Balkenelemente nacheinander in den Navigationsleisten-Stack zu drücken:

//Definieren Sie myFrame entsprechend Ihren Bedürfnissen
let navigationBar = UINavigationBar(frame: myFrame)
let backItem = UINavigationItem(title: "Zurück")
let topItem = UINavigationItem(title: "Mein Titel")
navigationBar.setItems([backItem,topItem], animated: false)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X