Gibt es eine Möglichkeit, sich auf einem Uibutton niederzulassen, der alle UIControlstates gleichzeitig aktualisiert?
Frage
Ich habe einen Uibutton, und ich möchte seinen Titel aktualisieren, aber ich muss es lieber für jeden einzelnen Zustand nicht immer tun, wie der folgende:
[myButton setTitle:@"Play" forState:UIControlStateNormal];
[myButton setTitle:@"Play" forState:UIControlStateHighlighted];
[myButton setTitle:@"Play" forState:UIControlStateSelected];
Gibt es einen besseren Weg?
Lösung
Nach der Dokumentation sollten Sie nur anrufen:
In Objective-C:
[myButton setTitle:@"Play" forState:UIControlStateNormal];
In Swift:
myButton.setTitle("Play", for: .normal)
Die Uibutton -Dokumente erklären, warum:
Wenn eine Eigenschaft für einen Zustand nicht angegeben ist, besteht im Allgemeinen die Verwendung des Uicontrolstatenorurmwerts. Wenn der Wert für UIControlstatenormale nicht festgelegt ist, stand die Eigenschaft standardmäßig mit einem Systemwert. Mindestens sollten Sie den Wert für den normalen Zustand festlegen.
Wenn Sie den Normalwert nur festlegen, beziehen sich die anderen Zustände beim Festlegen.
Andere Tipps
oder Sie können sich besiegen durch:
[myButton setTitle:@"Play" forState:UIControlStateNormal|UIControlStateHighlighted|UIControlStateSelected];
2019
Es ist nur
yourButton.setTitle("Click me", for: .normal)
Sie können eine Kategorie für Uibutton erstellen:
@implementation UIButton (Addition)
-(void)setTitleForAllStates:(NSString *)title {
//you can add/remove this area : UIControlStateApplication, UIControlStateDisabled, UIControlStateReserved
[self setTitle:title forState:UIControlStateNormal];
[self setTitle:title forState:UIControlStateSelected];
[self setTitle:title forState:UIControlStateHighlighted];
}
@end