programmatisch markieren UIBarButtonItem
nach Antippen der "record" BarButtonItem ich möchte zu halten es programmatisch hervorgehoben, bis die Aufnahme beendet ist. Die Hervorhebung Grafiken von iOS sind sehr gut, dafür würde ich gerne bleiben oder gesetzt werden, der Staat.
Bis jetzt fand ich 'setSelected' und 'setHighlighted", aber diese funktionieren nicht auf ein UIBarButtonItem.
Irgendwelche Vorschläge wie man dieses Problem lösen? Vielen Dank im Voraus, Koen.
InformationsquelleAutor Ckoeny | 2011-11-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
setSelected
undsetHighlighted
funktioniert auf UIControls, aber nicht UIBarButtonItems (die nicht UIControls).Ich würde empfehlen, mit UIBarButtonItem ist
- (void)setBackgroundImage:(UIImage *)Hintergrundbild forState:(UIControlState)Zustand barMetrics:(UIBarMetrics)barMetrics
(Dokumentation linked) - Methode ändern Sie den hintergrund Bild, um etwas, das imitiert hervorheben.Können Sie auch ein benutzerdefiniertes UIView auf den Punkt, die imitiert auch hervorheben (siehe
customView
Eigenschaft).Ich habe das Problem gelöst, indem mit einem UIImageView als customView. die userInteractionEnabled zu WAHREN.
InformationsquelleAutor Michael Dautermann
Wenn Sie fügen Sie eine
UIBarButtonItem
mit einemUIButton
sichern, können Sie einfach Fragen, für die CustomView.Ja, der cast ist notwendig, aber kaum ernst. Hast du unten abstimmen diese Antwort? Bearbeiten es.
Ich von Ihnen positiv bewertet werden. Nicht sicher, wo die downvote kam.
Gut, danke!
InformationsquelleAutor Cameron Lowell Palmer
Wenn Sie unbedingt wollen, verwenden Sie die Standard-Grafiken, könnten Sie initialisieren Ihre Schalter-Element als
und setzen Sie es mit
Würden Sie auch brauchen, um verwenden Sie die style-Eigenschaft liest den aktuellen Zustand aus.
InformationsquelleAutor Patrick
Erstellen Sie eine Steckdose, an der Sie diese Taste zum Beispiel
btnMoreOut
- und Sie tun:Ich hoffe das hilft..viel Glück 🙂
Diese funktioniert wie ein Juwel!
InformationsquelleAutor ThePunisher
1) Holen Sie sich ein Verweis auf die bar-Taste.
2) Mit der style-Eigenschaft zuweisen UIBarButtonItemStyleDone, oder UIBarButtonItemStylePlain auf der Grundlage einiger Staat.
NB. Sie können den Zustand auf verschiedene Weise. Zum Beispiel, die mit NSUserDefaults speichern Schlüssel-Wert-paar gibt. Ziehen Sie den Wert, und greifen einige BOOL Vertretung, um gegen die Tests. Dann schreiben Sie diese Zeile:
Oder mit den Standardwerten für alle verschachtelten so:
Ohne den ternären operator:
Ok, lassen Sie mich wissen, wenn das ist genug Kontext für Sie dann. Macht es jetzt Sinn? Ich bin mit dem ternären operator, die möglicherweise werfen Sie.
Danke @cocoanut, das ist viel besser.
InformationsquelleAutor smileBot
p.einem.'s Antwort, Umgerechnet für Xcode 9, Swift 4.
Die Idee ist, dass die
.done
Stil - highlights- oder Fett, im Swift 4 - die Taste text.Initialize die button-Element in eine nicht markierte Zustand:
Wählen Sie mit der Taste item, um einen hervorgehobenen Status durch eine ternärer operator, etwa so:
Oder, alternativ, schalten Sie die highlight-Staat mit einer regulären
if/else
- Anweisung wie folgt statt:Und, um einen booleschen Wert zu überprüfen, ob die Schaltfläche Element markiert ist:
Hinweise:
bordered
Stil war veraltet in iOS 8, so habe ich.plain
hier statt. Beide präsentieren Sie die Taste item text in einen nicht markierten Zustand.Den
#selector
Funktion muss entweder ein@IBAction
oder es muss vorangestellt werden@objc
zu vermeiden "Objective-C Inferenz" Probleme. Zum Beispiel:oder, wenn Sie verbunden sind, eine Aktion auf die Schaltfläche Element:
Diese beiden Deklarationen dem compiler, dass Sie mit Objective-C-basierte Funktionen. Dies ist erforderlich, da
#selector
ist ein Objective-C, was unter der Haube, und im Swift 4 Sie haben an dieser, sondern lassen Sie den compiler ableiten, was vor sich geht, wie es zuvor getan hat.InformationsquelleAutor leanne
Können Sie versuchen, diese (Swift):
Call setupInterface() in ViewDidLoad und eine andere Funktion in Ihrem code.
InformationsquelleAutor Allan Scofield
Wenn Sie wollen, ändern Sie nur title-Attribute (z.B. Titel, Farbe), können Sie rufen Sie
setTitleTextAttributes:forState:
Bei mir funktioniert es stabiler als
setTintColor:
(wechselnde Färbung Farbe bricht während unwind segue push-animation).InformationsquelleAutor Akhrameev
Können Sie zwei Bilder für die beiden Zustände der Schaltfläche wie für einen Staat "UIControlStateNormal" können Sie ein Bild für den normalen Zustand.
Dann, wenn die Taste gedrückt wird, setzen Sie das andere Bild, das zeigt, dass es gedrückt, dann wird das Bild mit einem check mit isSelected-Methode von UIButton.
Hoffe, das macht einigen Sinn.
InformationsquelleAutor ankit.tlp