ist es die einfache Art und Weise zu handhaben uialertview-Objekt Ergebnis ohne delegation?
Ich habe eine Funktion, die zeigt, dass ein uialertview-Objekt mit JA/NEIN-Tasten, und es wird verwendet, nur innerhalb der Funktion Gültigkeitsbereich, so dass ich nicht wollen, zu implementieren, eine delegation zu fangen die Benutzer-feedback.
Gibt es eine Möglichkeit zu wissen, welche Schaltfläche der Benutzer geklickt ohne Umsetzung UIAlertViewDelegate, so etwas wie:
[alert show];
if([alert indexOfClickedButton] == indexOfYes)
{
....
}
Oder lambda-Ausdruck wie in der Animation
- Uialertview-Objekt ohne delegation es gibt nur einen Weg, die u erstellen Sie eine benutzerdefinierte uialertview-Objekt.
- Hier ist eine Website, die eine block-basierte uialertview-Objekt (zusammen mit anderem): blog.mugunthkumar.com/coding/...
- Uialertview-Objekt *aletView = [[uialertview-Objekt alloc] initWithTitle:@"Titel" message:@"Hiii" delegate:self cancelButtonTitle:@"Abbrechen" otherButtonTitles:nil, nil]; [alert show]; verwenden Sie nicht alle delegieren, wenn Sie wollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Möglichkeit zu vermeiden delegation vollständig, aber Sie könnte einen wrapper zu diesem Zweck entlang dieser Linien:
(ARC angenommen wird, wenn Sie es nicht verwenden, ändern
delegate = nil
zu[delegate release]
.)Nutzung wäre so etwas wie:
delegate = nil
sagen : die Aufnahme delegieren stark in diesem block wird wahrscheinlich führen zu eine retain-Zyklus. Dies unter iOS 5.1 ARC.delegate = nil
ist notwendig, weilalertView.delegate
ist eine nicht-Beibehaltung von Eigentumsrechten, und wir müssen das Objekt "delegieren", bis der Alarm-Ansicht wird die Schaltfläche Rückruf beendet ist. Die Warnung (false-positive") kann ignoriert werden, mit#pragma clang diagnostic push
und#pragma clang diagnostic ignored "-Warc-retain-cycles"
vor, und#pragma clang diagnostic pop
nach dieser Zeile.delegate:nil
bei der Erstellung der Warnung.UIAlertView
ist veraltet und seine Ersetzung,UIAlertController
, erlaubt das hinzufügen von Aktionen mitUIAlertAction
, die einen block als action-handler.Ich geschrieben habe, einen blog-post darüber, wie (und warum) block hinzufügen Rückrufe zu alarmieren, Aussicht, action-sheets und Animationen:
http://blog.innovattic.com/uikitblocks/
Wenn Sie wollen einfach nur eine funktionierende Umsetzung dieses können Sie herunterladen der Quelldateien von GitHub:
https://github.com/Innovattic/UIKit-Blocks
Verwendung:
Ist es sehr einfach. Angenommen, Sie haben eine Warnung, so etwas wie dieses:
Sind Sie gehen zu müssen, diese Methode hinzuzufügen:
Eine mögliche Implementierung dieser Methode würde wie folgt Aussehen:
Können Sie dies tun, indem Sie die benutzerdefinierte Ansicht können ein-und ausgeblendet werden, um zu vermeiden, ActionSheets
Keine Notwendigkeit zur Ableitung der Klasse. Mit Block, ist es leicht zu bekommen Benutzer ausgewählte Schaltfläche index.
Dank Arkku. Hier ist der Swift-version.
https://github.com/exchangegroup/alert-view-with-callback-swift
UIAlertView
ist veraltet, ab iOS 8.0, eine bessere LösungUIAlertController
: