Ich versuche, eine Aktualisierungsschaltfläche zur oberen Leiste eines Navigationscontrollers hinzuzufügen, ohne Erfolg.
Hier ist der Header:
@interface PropertyViewController : UINavigationController {
}
Hier ist, wie ich versuche, es hinzuzufügen:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@"Show" style:UIBarButtonItemStylePlain
target:self action:@selector(refreshPropertyList:)];
self.navigationItem.rightBarButtonItem = anotherButton;
}
return self;
}
iphone
ios
uinavigationcontroller
uinavigationbar
Artilheiro
quelle
quelle
self.topViewController.navigationItem.leftBarButtonItem = nextButton;
Fügen Sie die Schaltfläche zum Navigationselement des Ansichtscontrollers hinzu, das darauf verschoben werden soll
PropertyViewController
Ihnen erstellte Klasse verschoben werden soll.Das ist:
Dieser programmgesteuert erstellte infoButton wird nun in der Navigationsleiste angezeigt. Die Idee ist, dass der Navigationscontroller seine Anzeigeinformationen (Titel, Schaltflächen usw.) von der Anzeige abruft, die
UIViewController
er anzeigen möchte. Sie fügen tatsächlich keine Schaltflächen und dergleichen direkt zum hinzuUINavigationController
.quelle
Es scheint, dass einige Leute (wie ich) hierher kommen und nach Möglichkeiten suchen, eine Navigationsleistenschaltfläche im Interface Builder hinzuzufügen. Die Antwort unten zeigt, wie es geht.
Fügen Sie Ihrem Storyboard einen Navigations-Controller hinzu
Wählen Sie Ihren View Controller aus und wählen Sie dann im Xcode-Menü Editor> Einbetten> Navigations-Controller .
Alternativ können Sie eine
UINavigationBar
aus der Objektbibliothek hinzufügen .Fügen Sie ein Balkenschaltflächenelement hinzu
Ziehen Sie a
UIBarButtonItem
aus der Objektbibliothek in die obere Navigationsleiste.Es sollte so aussehen:
Legen Sie die Attribute fest
Sie könnten einen Doppelklick auf „Item“ , um den Text zu so etwas wie „Refresh“ zu ändern, aber es ist eine tatsächliche Symbol für Refresh , dass Sie verwenden können. Wählen Sie einfach den Attributinspektor für das
UIBarButtonItem
und für Systemelement die Option Aktualisieren .Dadurch erhalten Sie das Standard-Aktualisierungssymbol.
Fügen Sie eine IB-Aktion hinzu
Ziehen Sie
UIBarButtonItem
mit gedrückter Ctrl-Taste zum View Controller, um eine hinzuzufügen@IBAction
.Das ist es.
quelle
Es gibt eine Standardsystemschaltfläche für "Aktualisieren":
quelle
Sie können dies verwenden:
Ziel c
Schnell
quelle
quelle
Für schnelle 2:
quelle
Hier ist die Lösung in Swift (Optionen nach Bedarf einstellen):
quelle
Warum bist du Unterklassen?
UINavigationController
? Es ist nicht erforderlich, eine Unterklasse zu erstellen, wenn Sie lediglich eine Schaltfläche hinzufügen müssen.Richten Sie eine Hierarchie mit einem
UINavigationController
oben und dann in derviewDidLoad:
Methode Ihres Root-View-Controllers ein : Richten Sie die Schaltfläche ein und hängen Sie sie durch Aufrufen an das Navigationselement anquelle
Du kannst es versuchen
quelle
Swift 4:
quelle
quelle
Versuchen Sie dies. Es funktioniert für mich.
Navigationsleiste und Hintergrundbild zur rechten Schaltfläche hinzugefügt.
quelle
quelle
quelle
quelle
Sie sollten Ihr barButtonItem in der
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
Methode hinzufügen .quelle
Kopieren Sie einfach diesen Objective-C-Code und fügen Sie ihn ein.
quelle
Dieses Problem kann auftreten, wenn wir den Ansichts-Controller löschen oder versuchen, einen neuen Ansichts-Controller im Interface Builder (main.storyboard) hinzuzufügen. Um dieses Problem zu beheben, muss "Navigationselement" im neuen Ansichts-Controller hinzugefügt werden. Manchmal kommt es vor, dass wir einen neuen Bildschirm für den Ansichtscontroller erstellen und keine automatische Verbindung zu "Navigationselement" herstellen.
quelle
Sie können auch mehrere Schaltflächen mit hinzufügen
rightBarButtonItems
quelle
@Artilheiro: Wenn es sich um ein navigationsbasiertes Projekt handelt, können Sie BaseViewController erstellen. Alle anderen Ansichten erben diese Basisansicht. In BaseView können Sie generische Methoden definieren, um die rechte Schaltfläche hinzuzufügen oder den Text der linken Schaltfläche zu ändern.
Ex:
Implementieren Sie jetzt in jeder benutzerdefinierten Ansicht diese Basisansicht und rufen Sie die folgenden Methoden auf:
In einigen Methoden rufen Sie die Basismethode auf als:
quelle