Interactieve Playgrounds in Xcode 8

  • een paar jaar geleden /
  • Door Roelf

Ik ben deze weken druk bezig met Xcode 8 en Swift 3. Eén van de nieuwe dingen in Xcode 8 is dat een Xcode Playground nu volledig interactief is en dat een storende bug uit Xcode 7 Playgrounds is verholpen: als je een Navigation Controller in een Xcode 7 Playground gebruikte, werkte de ‘Terug’-knop niet goed.

Een voorbeeld zie je in de volgende Xcode 7 Playground. In de Timeline (⌘ ⌥ Enter) zie je een tabel staan, die in een Navigation Controller is gezet:

Xcode Playground is nu interactief

De bolletjes links in de tabelrijen zijn UIImage-objecten, gemaakt op de ‘klassieke’ (lelijke en zeker niet object-georiënteerde) manier, met een context:

Het grootste probleem wordt pas zichtbaar als je op een cel in de tabel klikt. In de Timeline verschijnt de Detail-viewcontroller:

Een Xcode Playground met een viewcontroller

Er is alleen geen weg meer terug… De ‘Back’-knop ontbreekt. Dit is geen bug in de programmacode, maar een probleem in de manier waarop Navigation Controllers in Playgrounds van Xcode 7 worden getoond.

Zelf proberen? Hier is de complete Playground (voor Xcode 7 – in Xcode 8 werkt deze Playground niet omdat hij in Swift 2.2 is geschreven).

Xcode Playground: de oude versie (Xcode 7)

De oplossing: Xcode Playground voor versie 8

In Xcode 8 is het probleem met de verdwijnende ‘Terug’-knop opgelost. Dat betekent dat je vanaf nu dus probleemloos Navigation Controllers kunt testen. Een voorbeeld zie je hieronder. En opnieuw heb ik, net als in mijn artikel van gisteren, de UIGraphicsRenderer-class gebruikt – het was nog nooit zó gemakkelijk om een UIImage te maken!

Hier zie je een Table View Controller, ingekapseld in een Navigation Controller, in een Xcode 8 Playground:

Een TableViewController in een Xcode Playground

De Table View Controller is interactief; klik op een tabelcel en er verschijnt een Detail View Controller:

(Zie je de Timeline niet? Druk dan op  ⌘ ⌥ Enter.)

Detail Viewcontroller

En met de ‘Terug’-knop bovenin kun je weer keurig terug naar de Table View Controller – in een Playground!

De gekleurde cirkels die je in de tabel ziet, zijn UIImage-objecten die opnieuw ter plekke zijn gemaakt, maar nu op de nieuwe manier, met de UIGraphicsImageRenderer-class:

En de complete Playground vind je hieronder. Maar let op: alleen voor Xcode 8! De UIGraphicsImageRenderer-class bestaat niet in iOS 9. Let ook even op de andere subtiele verschillen tussen Swift 2 en Swift 3:

  • De naam van maakCirkelMetKleur() is gewijzigd in maakCirkel(), om te voldoen aan de nieuwe Swift 3 API-richtlijnen.
  • Bijna alle UIKit– en Core Graphics-methodes hebben andere argumentnamen (door de nieuwe Swift 3 API-richtlijnen).

Voor de zekerheid: om van een tabelcel naar een bijbehorende detail-viewcontroller te gaan, worden geen segues gebruikt. In plaats daarvan wordt de nieuwe detail-viewcontroller (een instantie van de DetailVC-class simpelweg op de stapel van de Navigation Controller geplaatst, met de .pushViewController()-methode.

Playground: Xcode 8

Heb je vragen over de wijzigingen in Swift? Klik dan hier en stel ze in het forum van de iOS Academie.

Zelf met Swift aan de slag?

De eBooks van de iOS Academie zijn uiteraard bijgewerkt voor de laatste versie van Swift. En als je de eBooks al hebt aangeschaft, zijn de updates levenslang gratis.

Klik hier voor meer informatie over de populaire serie eBooks: Apps bouwen met Swift.

Apps bouwen met Swift eBooks