Antworten:
Hey Namratha, wenn Sie nach einer Änderung des Textes und des 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 werden und Sie erhalten die Schaltfläche im sender
Argument, wenn die Aktion ausgelöst wird. Wenn dies nicht ausreicht (weil Sie an einer anderen Stelle als in den Aktionen auf die Schaltflächen zugreifen müssen), deklarieren Sie eine Steckdose 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 beim Laden der Schnittstelle fest.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
Verwenden UIControlStateNormal
Sie diese Option , 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];
Wenn jemand, der in Swift nach einer Lösung sucht, hier landen würde, wäre es:
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
So ändern Sie den Schaltflächentitel:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Zum Deaktivieren:
[mybtn setEnabled:NO];
In Swift 3 können Sie den Titel einer Schaltfläche einfach ändern, indem Sie:
button.setTitle("Title", for: .normal)
und Sie deaktivieren die Schaltfläche durch:
button.isEnabled = false
.normal
ist das gleiche wie UIControlState.normal
weil der Typ abgeleitet wird.
Wenn Sie den Titel als Reaktion auf das Tippen ändern möchten, können Sie dies in der IBAction-Methode der Schaltfläche in Ihrem View Controller-Delegaten 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 Voice-Chat, aber Sie können Ihre lokale boolesche Eigenschaft ow verwenden, um den Switch zu steuern.
SWIFT 4 mit Verlängerung
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")