Das derzeitige Projekt: Die gute alte iOS-App CompareMe in der neuen Programmiersprache Swift von Apple neu zu schreiben. Daher teile ich gerne ein paar Einblicke und Code-Schnipsel mit der interessierten iOS-Developer-Community. Hier das Swift ActionSheet Beispiel:

Heute erstellen wir ein paar Action-Sheets in Swift um Webseiten in Safari, Twitter Profile in der nativen Twitter App oder E-Mail auf dem iOS-Device zu öffnen. Der Swift-Code ist unter Xcode 6.1 GM mit iOS 8.1 unter OS X Yosemite 10.10 GM getestet.

@IBAction func testButtonPressed(sender: AnyObject) {
        
        var alert = UIAlertController(title: "Open external link?", message: "Webpage in Safari, profile in Twitter app or compose a new eMail.", preferredStyle: UIAlertControllerStyle.ActionSheet)

        alert.addAction(UIAlertAction(title: "Open http://www.codedifferent.com",
            style: UIAlertActionStyle.Default, handler: { (action:UIAlertAction!) -> Void in
                UIApplication.sharedApplication().openURL(NSURL(string: "http://www.codedifferent.com")!)
                return
        }))

        alert.addAction(UIAlertAction(title: "Open @codedifferent in Twitter app",
            style: UIAlertActionStyle.Default, handler: { (action:UIAlertAction!) -> Void in
                UIApplication.sharedApplication().openURL(NSURL(string: "twitter://user?screen_name=codedifferent")!)
                return
        }))

        alert.addAction(UIAlertAction(title: "Create eMail",
            style: UIAlertActionStyle.Default, handler: { (action:UIAlertAction!) -> Void in
                UIApplication.sharedApplication().openURL(NSURL(string: "mailto:your@emailadress.com")!)
                return
        }))

        alert.addAction(UIAlertAction(title: "Cancel",
            style: UIAlertActionStyle.Cancel, handler: nil))
        
        if let popoverController = alert.popoverPresentationController {
            popoverController.sourceView = sender as UIView
            popoverController.sourceRect = sender.bounds
        }

        self.presentViewController(alert, animated: true, completion: nil)
}
Wenn Du den Alert als UIAlertControllerStyle.ActionSheet anzeigen willst, vergewissere Dich, dass Du die beiden Attribute popoverController.sourceView & popoverController.sourceRect setzt. Sonst stürzt die App auf iOS-Geräten mit großem Bildschirm, wie dem iPad, ab. Das ActionSheet wird dort nämlich nicht als Ebene modal über den gesamten Bildschirm geblendet, sondern in einem Popup neben dem Element, die das ActionSheet ausgelöst hat.

Am einfachsten lässt sich eine neue E-Mail durch übergeben der gewünschten E-Mail-Adresse als „mailto:…@…“ erstellen. Doch Vorsicht: Damit schickt man den Nutzer in das Programm Mail und übergibt die Ziel-E-Mail-Adresse. Wenn der Nutzer die E-Mail geschrieben oder den Vorgang abgebrochen hat, bleibt er in der externen App Mail. Wenn Du willst, dass der Nutzer in Deiner App auch nach dem E-Mail-Schreiben bleibt, oder wenn Du mehr Parameter der E-Mail vorausfüllen willst, hilft nur MFMailComposeViewController. Damit kannst Du dann auch den Betreff oder den E-Mail-Text vorgeben … aber das ist Stoff für ein anderes Posting ;-)

Share This