![]() |
UIAlertViewDelegate und anonyme Mehtoden
Hallo,
ich kämpfe gerade mit dem UIAlertViewDelegate. Um die Klasse so universell wie möglich zu halten, habe ich mir gedacht, dass ich dem Delegate eine anonyme Methode mitgebe. Hier die Klasse:
Delphi-Quellcode:
Die Anwendung sieht folgendermaßen aus:
TAlertHandlerProc = reference to procedure(alertView: UIAlertView;
clickedButtonAtIndex: NSInteger); TAlertViewDelegate = class(TOCLocal, UIAlertViewDelegate) private FHandler: TAlertHandlerProc; protected constructor Create(AHandler: TAlertHandlerProc); public class function Construct(AHandler: TAlertHandlerProc): TAlertViewDelegate; procedure alertView(alertView: UIAlertView; clickedButtonAtIndex: NSInteger); cdecl; procedure alertViewCancel(alertView: UIAlertView); cdecl; end; class function TAlertViewDelegate.Construct( AHandler: TAlertHandlerProc): TAlertViewDelegate; begin Result:= Self.Create(AHandler); end; constructor TAlertViewDelegate.Create(AHandler: TAlertHandlerProc); begin inherited Create; FHandler:= AHandler; end; procedure TAlertViewDelegate.alertView(alertView: UIAlertView; clickedButtonAtIndex: NSInteger); begin if Assigned(FHandler) then FHandler(alertView, clickedButtonAtIndex); end; procedure TAlertViewDelegate.alertViewCancel(alertView: UIAlertView); begin end;
Delphi-Quellcode:
Wenn ich dann die MessageBox schließe, schmiert die App ab. Wenn der Inhalt von der anonymen Methode aber direkt im alertView() steht, funktioniert alles einwandfrei.
var alert: UIAlertView;
alertTextField: UITextField; AlertDelegate: TAlertViewDelegate; begin AlertDelegate:= TAlertViewDelegate.Construct( procedure(alertView: UIAlertView; clickedButtonAtIndex: NSInteger) var InputText: String; begin InputText:= NSSTRToString(TNSString.Wrap(TUITextField.Wrap(alertView.textFieldAtIndex(0)).Text)); if not Empty(InputText) then FController.Test(InputText); end); alert:= TUIAlertView.Create; alert.setTitle(NSStr('MsgBos')); alert.setMessage(NSStr('Test')); alert.setAlertViewStyle(UIAlertViewStylePlainTextInput); alert.setCancelButtonIndex(alert.addButtonWithTitle(NSStr('OK'))); alert.setCancelButtonIndex(alert.addButtonWithTitle(NSStr('Abbrechen'))); alert.setDelegate(AlertDelegate.GetObjectID); alert.show; alert.release; Irgendwelche Ideen? Viele Grüße Croco |
AW: UIAlertViewDelegate und anonyme Mehtoden
Weak?
|
AW: UIAlertViewDelegate und anonyme Mehtoden
Speicher die Delegates jetzt einfach in einem Array in der Klasse, danke für den Hinweis! :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz