3 Stimmen

Wie greife ich auf UIButton in UIAlertView zu

Ich möchte den 'Speichern'-Button in meinem UIAlertView selektiv aktivieren, damit Sie keine Datei ohne Namen speichern können. Ich kann Textänderungsereignisse für das angehängte UITextView (der Stil ist UIAlertViewStylePlainText) mithören, aber ich kann nicht sehen, wie ich auf die Schaltflächen zugreifen kann, um die Aktivierung/Deaktivierung durchzuführen. Ich habe versucht, mit [alertView subviews] zu iterieren, aber da ist nur das Label drin (keine Schaltflächen). Wo muss ich suchen, um direkt auf die an einen UIAlertView angefügten UIButtons zuzugreifen?

4voto

Mick MacCallum Punkte 126843

Einfach, implementieren Sie einfach das UIAlertViewDelegate in Ihrer Klasse und nutzen Sie die alertViewShouldEnableFirstOtherButton: Delegatenmethode. Sie können dies verwenden, um die Länge des Textfelds zu überprüfen und den Button entsprechend zu aktivieren...

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
    return [[[alertView textFieldAtIndex:0] text] length] > 0;
}

Vergewissern Sie sich, dass Sie Ihren ViewController in Ihrer Schnittstelle so einstellen, dass er diesem Delegaten entspricht, indem Sie < UIAlertViewDelegate > verwenden und diese Klasse als Delegaten für die Alarmeinstanz festlegen.

0voto

diatrevolo Punkte 2726

Instanziieren Sie Ihren AlertView:

UIAlertView *av = [UIAlertView alloc] initWithTitle:@"Mein Titel" message:@"Nachricht" delegate:self cancelButtonTitle:@"Abbrechen" otherButtonTitles:@"Speichern", nil];
    });

Stellen Sie dann sicher, dass Ihre Klasse UIAlertViewDelegate implementiert und suchen Sie nach dem Index des Buttons, den Sie überwachen möchten:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex==1) {
        //hier speichern
    }
}

0voto

juniperi Punkte 3613

0x7fffffff hat die richtige Antwort gepostet, aber wenn jemand nach der Antwort sucht, wie man dieses Textfeld und die Schaltfläche zum Speichern zum UIAlertView hinzufügt, hier ist die Antwort:

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Speichern" message:@"" delegate:self cancelButtonTitle:@"Abbrechen" otherButtonTitles:@"Speichern", nil];
    [alert setAlertViewStyle:UIAlertViewStylePlainTextInput];

Diese Delegatenmethode:

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView {
    return [[[alertView textFieldAtIndex:0] text] length] > 0;
}

funktioniert nicht, wenn Sie diese Speichern-Schaltfläche mit der Methode addButtonWithTitle: hinzufügen.


Und wenn die Speichern-Schaltfläche geklickt wird, wird diese Delegatenmethode aufgerufen und hier können Sie lesen, was der Benutzer in dieses Textfeld geschrieben hat:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if(buttonIndex == 1) {
       // Speichern-Schaltfläche geklickt
       NSLog(@"%@", [[alertView textFieldAtIndex:0] text]);
    }
}

-1voto

Guy Kogus Punkte 7093

Sie können die Buttons eines Alert-Fensters ab iOS 7 nicht mehr zugreifen. Leider haben sie die Unterelemente vollständig versteckt und es gibt keine Möglichkeit, auf sie zuzugreifen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X