it-swarm.com.de

ändern Sie den Text der Schaltfläche und deaktivieren Sie die Schaltfläche in iOS

Wie ändern Sie den Text der Schaltfläche und deaktivieren eine Schaltfläche in iOS?

100
Namratha

Hey Namratha, Wenn Sie nach dem Ändern des Textes und dem aktivierten/deaktivierten Status eines UIButton fragen, können Sie dies ganz einfach wie folgt tun.

[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled

Wenn Sie die Schaltflächen im Interface Builder erstellt haben und im Code darauf zugreifen möchten, können Sie die Tatsache nutzen, dass sie als Argument an die IBAction-Aufrufe übergeben werden:

- (IBAction) triggerActionWithSender: (id) sender;

Dies kann an die Schaltfläche gebunden sein und Sie erhalten die Schaltfläche im Argument sender, wenn die Aktion ausgelöst wird. Wenn dies nicht genug ist (weil Sie die Tasten an anderer Stelle als in den Aktionen aufrufen müssen), deklarieren Sie einen Auslass für die Schaltfläche:

@property(retain) IBOutlet UIButton *someButton;

Dann ist es möglich, die Schaltfläche in IB an den Controller zu binden. Der NIB-Ladecode legt den Eigenschaftswert fest, wenn die Schnittstelle geladen wird.

201
MGunetileke
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];

Verwenden Sie UIControlStateNormal, um Ihren Titel festzulegen.

Es gibt einige Zustände, die UIbuttons bereitstellen, Sie können einen Blick darauf werfen:

[myButton setTitle: @"myTitle" forState: UIControlStateApplication];
[myButton setTitle: @"myTitle" forState: UIControlStateHighlighted];
[myButton setTitle: @"myTitle" forState: UIControlStateReserved];
[myButton setTitle: @"myTitle" forState: UIControlStateSelected];
[myButton setTitle: @"myTitle" forState: UIControlStateDisabled];
20
user1281651

Wenn jemand, der in Swift nach einer Lösung sucht, hier gelandet wäre, wäre das:

myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text

Dokumentation: isEnabled , setTitle.

Älterer Code:

myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
17
mikiqex

Angenommen, die Schaltfläche ist eine UIButton:

UIButton *button = …;
[button setEnabled:NO]; // disables
[button setTitle:@"Foo" forState:UIControlStateNormal]; // sets text

Siehe die Dokumentation für UIButton .

9
zoul

In Swift 3 können Sie den Titel einer Schaltfläche einfach wie folgt ändern:

button.setTitle("Title", for: .normal)

und Sie deaktivieren den Button durch:

button.isEnabled = false

.normal ist identisch mit UIControlState.normal, da der Typ abgeleitet wird.

3
lmiguelvargasf

So ändern Sie den Button-Titel:

[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];

Für deaktivieren:

[mybtn setEnabled:NO];
3
Bhavin Ramani

Wenn Sie den Titel als Reaktion auf das Antippen ändern möchten, können Sie dies innerhalb der IBAction-Methode der Schaltfläche in Ihrem View-Controller-Delegierten versuchen. Dadurch wird ein Voice-Chat ein- und ausgeschaltet. Das Einrichten des Voice-Chats wird hier nicht behandelt!

- (IBAction)startChat:(id)sender {
UIButton *chatButton = (UIButton*)sender;
if (!voiceChat.active) {
    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
                                                                   message:@"Voice Chat will become live. Please be careful with feedback if your friend is nearby."
                                                            preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction * action) {}];
    [alert addAction:defaultAction];
    [self presentViewController:alert animated:YES completion:nil];
    [voiceChat start];
    voiceChat.active = YES;
    [chatButton setTitle:@"Stop Chat" forState:UIControlStateNormal];
}
else {
    [voiceChat stop];
    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
                                                                   message:@"Voice Chat is closed"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];
    [self presentViewController:alert animated:YES completion:nil];
    voiceChat.active = NO;
    [chatButton setTitle:@"Chat" forState:UIControlStateNormal];
}

}

voiceChat ist natürlich spezifisch für den Voice-Chat, Sie können jedoch die lokale boolesche Eigenschaft von ow verwenden, um den Switch zu steuern.

0
Tim

Swift 4 mit Erweiterung

einstellen: 

// set button label for all states
extension UIButton {
    public func setAllStatesTitle(_ newTitle: String){
        self.setTitle(newTitle, for: .normal)
        self.setTitle(newTitle, for: .selected)
        self.setTitle(newTitle, for: .disabled)
    }
}

und verwenden:

yourBtn.setAllStatesTitle("btn title")
0
Oz Shabat