Mam następujący funkcja działa jak oczekuję, w iOS 8:Przechodząc funkcji jako parametry w Swift
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)
}
chciałbym zrobić coś takiego jak poniżej, aby przekazać jako argumenty metod być wykonywane, gdy jeden lub drugi z przycisków będą dotknął:
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)
}
Oczywiście nie robię słusznie z firstSelector i secondSelector, ponieważ to, co próbowałem do tej pory nie udało się. Przypuszczam, że nie używam właściwej składni w tym, czego chcę, ale jestem pewien, że można robić to, co chciałbym robić. Masz pomysł, jak to zrobić właściwie?
Co to znaczy „nie działa”? Podaj więcej szczegółowych informacji. –
Mam na myśli to, że otrzymuję komunikaty o błędach z kompilatora. Mogłabym je uwzględnić, jeśli jest przydatna. Zamiast tego przypuszczam, że składnia w mojej drugiej funkcji jest po prostu błędna. – Michel
Próbuję na własną rękę, aby znaleźć inne sposoby (na przykład przy użyciu generyków), ale w tym momencie wciąż bez powodzenia. – Michel