Kategorien-Archiv Xcode Swift DE

VonTobias Stephan

Navigation Controller Swift Back Button

Zu diesem Titel findet man zahlreiche Beiträge. In diesem Beispiel soll von dem Button „Geschwindigkeit lernen“ der nächste ViewController aufgerufen werden. Der Zurück-Button ist hier total wichtig…denn sonst gibt es keinen Weg zurück

dasdf

Das Segue hab ich einfach mit Rechts-Click auf den Button erstellt.

 

 

 

 

VonTobias Stephan

Swift 5.1 JSON to Object auslesen

Hier ein einfaches Beispiel, wie man ein Json String auslesen bzw. parsen kann.

let str = "{\"names\": [\"Bob\", \"Tim\", \"Tina\"]}"
let data = Data(str.utf8)

do {
    // Sicher stellen, dass es sich um das korrekte JSON Format handelt
    if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
        // try to read out a string array
        if let names = json["names"] as? [String] {
            print(names)
        }
        for (key, value) in json {
            print("\(key) : \(value)")
        }
    }
} catch let error as NSError {
    print("Failed to load: \(error.localizedDescription)")
}
VonTobias Stephan

Swift 5 App im Hintergrund erkennen (app moved to background)

Mit diesen Codzeilen kann man erkennen, ob eine App in den Hintergund geschoben wird.

 override func viewDidLoad() {
        super.viewDidLoad()

        let notificationCenter = NotificationCenter.default
        notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)


    }

    @objc func appMovedToBackground() {
        print ("App moved to Background")
    }

VonTobias Stephan

Swift 5 App im Vorderung erkennen (app moved to foreground)

Manchmal ist es sinnvoll zu erkenne, ob die eigene App in den Vordergrund geschoben wird. Mit diesen paar Codezeilen ist das leicht zu ermitteln.

   override func viewDidLoad() {
        super.viewDidLoad()
        

       

        let notificationCenter = NotificationCenter.default
        notificationCenter.addObserver(self, selector: #selector(appMovedToForeground), name: UIApplication.willEnterForegroundNotification, object: nil)


    }

    @objc func appMovedToForeground() {
        //do stuff
    }

VonTobias Stephan

Swift 5 tap gesture Geste

Diese paar Zeilen Code helfen schnell zu verstehen wie man einem Image die Tap Geste beibringt.

   
override func viewDidLoad() {
        super.viewDidLoad()



        self.imgPlacesPic.isUserInteractionEnabled = true;
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapGesture))
        imgPlacesPic.addGestureRecognizer(tapGesture)
    }

    @objc func tapGesture() {

        performSegue(withIdentifier: "FromMainToImages", sender: self)
    }
VonTobias Stephan

Swift 5 Mapkit pins hinzufügen MapView

Mit dieser einfachen Funktion kann man einen Pin zur MapView hinzufügen.

func addPin(latitude: Double, longitude: Double, title: String, subtitle: String) {
        let annotation = MKPointAnnotation()
        let centerCoordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
        annotation.coordinate = centerCoordinate
        annotation.title = title
        annotation.subtitle = subtitle

        mapView.addAnnotation(annotation)

}
Beispiel für das setzen von Pins
VonTobias Stephan

Swift 5 Notification Center lokale Benachrichtigung darstellen

Mit diese kurzen Sample kann man das einfach mal eben ausprobieren. Dieses Snippet unter die viewDidLoad Methode packen und von dort aus aufrufen.

 override func viewDidLoad() {
        super.viewDidLoad()

        self.SendLocalNotification(Title: "Titel der Benachrichtiung", Body: "Inhalt der Nachricht")
}

Hier einfach mal kurz zusammengefasst.

 func SendLocalNotification(Title: String,Body : String)
    {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert,.sound]) { (granted, error) in
            print("...Fehler hier behandeln")

        }

        let content = UNMutableNotificationContent()
        content.title = Title
        content.body = Body
        content.sound = .default

        let date = Date().addingTimeInterval(10)
        let dateComponents = Calendar.current.dateComponents([.year,.month,.weekday, .hour,.minute,.second], from: date)
        print(date)
        let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)

        let uuidString = UUID().uuidString
        let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger)
        center.add(request) { (error) in
            if error != nil {
                print (error?.localizedDescription ?? "")

            }
        }
    }
VonTobias Stephan

Swift 5 Bildschirmsperre entfernen bzw. verhindern Xcode 11

Mit dieser einfachen Zeile kann man die Bildschirmsperre verhindern. Manche App wie Navigationstools möchten keine Bildschirmsperre. Einfach diese Zeile an der richtigen Stelle einfügen.

application.isIdleTimerDisabled = true

Die richtige Stelle findest Du in der AppDelegate.swift.

VonTobias Stephan

swift webkit scrollen ausschalten

Wenn man nicht möchte, dass das Webview scrollbar ist, kann man das leicht mit folgenden Codezeilen deaktivieren.

webKitView1.
scrollView
.
isScrollEnabled = 
false

      
webKitView1.scrollView
.panGestureRecognizer.
isEnabled=
false

webKitView1
.
scrollView
.bounces = false
VonTobias Stephan

Xcode code formatieren mit Shortcut

Mit der Tastenkombination

CTRL (bzw. STRG) + I

wird der markierte Textblock automatisch formatiert.