Ich habe die folgende Funktion arbeiten, wie ich erwarte, in iOS 8:Funktionen als Parameter in Swift Passing
func showConfirmBox(msg:String, title:String,
firstBtnStr:String,
secondBtnStr:String,
caller:UIViewController) {
let userPopUp = UIAlertController(title:title,
message:msg, preferredStyle:UIAlertControllerStyle.Alert)
userPopUp.addAction(UIAlertAction(title:firstBtnStr, style:UIAlertActionStyle.Default,
handler:{action in}))
userPopUp.addAction(UIAlertAction(title:secondBtnStr, style:UIAlertActionStyle.Default,
handler:{action in}))
caller.presentViewController(userPopUp, animated: true, completion: nil)
}
Ich mag so etwas wie die folgenden machen, um als Argument zu sein, die Methoden zu übergeben wenn der eine oder andere der Tasten ausgeführt werden, berührt werden:
func showConfirmBox(msg:String, title:String,
firstBtnStr:String, firstSelector:Selector,
secondBtnStr:String, secondSelector:Selector,
caller:UIViewController) {
let userPopUp = UIAlertController(title:title,
message:msg, preferredStyle:UIAlertControllerStyle.Alert)
userPopUp.addAction(UIAlertAction(title:firstBtnStr, style:UIAlertActionStyle.Default,
handler:{action in caller.firstSelector()}))
userPopUp.addAction(UIAlertAction(title:secondBtnStr, style:UIAlertActionStyle.Default,
handler:{action in caller.secondSelector()}))
caller.presentViewController(userPopUp, animated: true, completion: nil)
}
Offensichtlich ich das richtige mit firstSelector und secondSelector bin nicht zu tun, weil das, was ich versucht habe bisher nicht funktioniert hat. Ich nehme an, ich verwende nicht die richtige Syntax für das, was ich will, aber ich bin mir sicher, dass es möglich ist, das zu tun, was ich gerne tun würde. Irgendeine Idee von der Art, es richtig zu machen?
nennen, was Sie meinen „nicht funktioniert“? Bitte geben Sie genauere Informationen an. –
Was ich meine ist, dass ich Fehlermeldungen vom Compiler bekomme. Ich könnte diese einschließen, wenn es nützlich ist. Statt dessen nehme ich an, dass die Syntax in meiner zweiten Funktion einfach falsch ist. – Michel
Ich versuche auf eigene Faust andere Wege zu finden (zB mit Generika), aber an dieser Stelle noch ohne Erfolg. – Michel