Wie "Bild ändern" und deaktivieren UIBarButtonItem
Habe ich ein NavigationBar-app mit zwei Ansichten: ein Elternteil und ein sub anzeigen. In der sub-Ansicht, ich bin das hinzufügen einer Schaltfläche, um der rechten Ecke wie folgt:
- (void)viewDidLoad {
UIBarButtonItem *tempButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"lock-unlocked.png"] style:UIBarButtonItemStylePlain target:self action:@selector(lockScreen)];
self.navigationItem.rightBarButtonItem = tempButton;
[tempButton release];
}
Wenn dieser button angeklickt wird, möchte ich ändern, das Bild dieser rightBarButtonItem und deaktivieren Sie die leftBarButtonItem (was wurde Hinzugefügt, die automatisch durch den controller). Im Grunde haben die beiden Staaten eine Taste, gesperrt und entsperrt.
Frage 1:
Die einzige Möglichkeit, die ich finden kann, wie um das Bild zu ändern ist, erstellen Sie eine neue UIButtonItem mit einem neuen Bild und ersetzen rightBarButtonItem mit, der neuen. Aber ich Frage mich, ob es gibt einen Weg, um einfach nur das Bild ändern, ohne eine neue UIBarButtonItem. Bin ich erstellen ein memory-leak, wenn ich halten die Schaffung neuer UIBarButtonItem?
Frage 2:
Wie kann ich einen Einfluß von selbst.navigationItem.leftBarButtonItem und deaktivieren/aktivieren? Ich glaube nicht, dass man manuell, es wird automatisch erstellt, für mich von der Steuerung. Ich sehe keine Methode/Eigenschaft auf UIBarButtonItem zum aktivieren/deaktivieren der Benutzer-Interaktion mit ihm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Frage 1: Erklären UIBarButtonItem *tempButton in die Schnittstelle
und synthetisieren es in die Umsetzung.
Erstellen Sie das Objekt in der viewDidLoad-ähnlich wie Sie jetzt sind.
Aber nicht release es hier, lassen Sie ihn in der dealloc-Methode hinzu, die sich normalerweise an der Unterseite.
Dann beim lockScreen aufgerufen wird, tun
Habe ich nicht eine Antwort für Frage 2, fürchte ich!
In Bezug auf Frage 2, verwenden Sie die 'enabled' property:
Kann ich nicht verstehen, wenn Sie einen navigationController, aber in diesem Fall deaktivieren Sie die zurück-Taste, müssen Sie rufen:
Sollte nicht die oben, lassen Sie die UILabel *l nach [self.window addSubView:l] nennen? So wird es beibehalten +1, wenn es in der Untersicht, aber freigegeben, -1 in der gleichen Branche. Andernfalls müssen Sie rufen disableLeftBarButtonItemOnNavbar:NEIN, es zu veröffentlichen. Und zwar werden Sie am Ende in der gleichen Stelle am Ende, Sie sind nicht undicht, ich denke, das statische Analyse-tools, die Sie gebaut haben, in XCode möchte nicht, dass in einem separaten Zweig. Kleines detail 🙂
Ich war nicht in der Lage zu deaktivieren/Grau aus einem Navigations-button mit:
...aber verstecken Sie die zurück-Taste funktioniert gut!
Dank Dzamir!
Mit "hidesBackButton=JA" ist nicht wirklich eine elegante Lösung, denn es BLENDET die Schaltfläche ist nicht, was wir wollen. Ein akzeptabler work-around, würde das hinzufügen eines UILabel, um das Fenster nur über die zurück-Taste mindestens deaktivieren die Berührungen auf die Schaltfläche.
Fügen Sie diese Methode, um Ihre AppDelegate Klasse:
Sie können es nennen, wie dies von jedem view-controller zu deaktivieren:
Aktivieren:
Ich denke, dieser code hilft Ihnen,
Schreiben und die Aktion hier,