Warming up


Kali ini kita akan pemanasan dulu sebelum masuk ke materi inti Swift & iOS Development. Silahkan untuk follow-along langkah demi langkah membuat proyek iOS pertama di Xcode dengan bahasa pemrograman Swift.

Jangan khawatir apabila belum memahami code-code nya, karena tujuan di sesi warming up ini adalah untuk perkenalan Xcode 13, seperti apa tampilannya dan bagaimana running project iOS ke Simulator iPhone 13 Pro.

Bisa dibilang ini adalah proyek aplikasi iOS pertama kita. Untuk bisa mengikuti step by step warming up proyek iOS ini adalah Konsentrasi 🧑🏻‍💻

Hasil akhir yang diharapkan bisa seperti ini:

Final results

Full source code -> Github


Xcode Project

Buka aplikasi Xcode, lalu pilih Create a new Xcode project:

New Xcode project

Pilih App:

App

Beri nama project (perhatikan poin 1 s.d 4 pada gambar dibawah, harap diikuti isiannya, kecuali yang poin 2 itu silahkan diisi apa aja selama formatnya com.namaorganisasi):

Project name

Pilih tempat lokasi file project akan disimpan. Dan jangan lupa checklist pada bagian Create Git repository on my Mac. Terkait Git repository akan ada topiknya tersendiri di sesi Bootcamp nanti.

Save files

Berikutnya, karena tadi kita checklis Git repository dan mungkin belum ada author infonya, maka akan muncul popup seperti ini:

No author info

Tinggal klik saja tombol Fix, lalu setelah itu isikan dengan value seperti contoh dibawah ini:

Author info filled


Project Setting

Setelah mengisi author info, muncul tampilan project setting seperti gambar dibawah. Perhatikan yang kita checklist adalah seperti yang ada di poin 1 dan 2 saja. Basically ini untuk mengatur orientasi devicedan target device yang akan digunakan.

Project setting

Create File Artwork.swift

Setelah mengatur project setting di Xcode, buat sebuah file baru dan beri nama Artwork seperti contoh pada gambar dibawah. File ini akan menampung dummy data dari list artwork di proyek aplikasi iOS pertama kita.

Create new file

Untuk template filenya, kita pilih Swift file, lalu klik tombol Next:

Swift template file

Beri nama filenya Artwork, lalu klik Create

Artwork.swift

Isi dari file Artwork.swift seperti gambar dibawah, silahkan ketik ulang codenya supaya bisa merasakan experience autocomplete code (Xcode code completion feature):

import Foundation
struct Artwork {
let authorName: String
let description: String
let thumbnailFileName: String
static func fetchArtwork () -> [Artwork] {
let a1 = Artwork(authorName: "Paolo Sala", description: "Garden Terrace of Turkey", thumbnailFileName: "a1")
let a2 = Artwork(authorName: "Henri Émilien Rousseau", description: "La chasse au faucon", thumbnailFileName: "a2")
let a3 = Artwork(authorName: "August Macke", description: "Unter den Lauben von Thun", thumbnailFileName: "a3")
let a4 = Artwork(authorName: "Paul Sérusier", description: "La Petite Anse", thumbnailFileName: "a4")
let a5 = Artwork(authorName: "Eduard Schulz-Briesen", description: "The Young Artist", thumbnailFileName: "a5")
let a6 = Artwork(authorName: "Wassily Wassilyevich Kandinsky", description: "Zubovsky Platz (1916)", thumbnailFileName: "a6")
return [a1, a2, a3, a4, a5, a6]
}
}

Content Artwork files


Image Assets

Kita akan import file-file Artwork yang sudah saya siapkan. Silahkan download di link ini

Caranya dengan drag and drop ke folder Assets seperti contoh gambar bergerak dibawah ini:

Drag and drop image to Assets

Video drag and drop

Berikutnya, delete files ViewController.swift bawaan Xcode karena kita akan membuat file *ViewController baru dari awal.

Delete files

Pilih Move to Trash:

Move to Trash

Jalankan proyek Xcode untuk memastikan tidak ada error:

run project

So far aman, simulator iPhone 13 Pro nya muncul dan tidak ada error:

no error

Navigation Controller

Kembali ke file Main, lalu kita akan menghapus ViewController bawaan Xcode untuk nantinya kita ganti dengan NavigationController. Jangan khawatir kalau bingung apa itu ViewController dan NavigationController, di sesi Bootcamp nanti akan dijelaskan detail.

Delete ViewController

Dan untuk membuat NavigationController, bisa dengan cara klik tombol Object Library di kanan atas Xcode 13, lalu setalah itu drag and drop ke Scene Xcode. Caranya bisa dilihat pada gambar-gambar dibawah ini:

Object library

dragdrop

Selanjutnya, karena nanti ketika build project harus ada ViewController yang diinisialisasi sebagai tampilan yang akan muncul pertama kali ketika running aplikasi, maka kita tentukan saja bahwa si NavigationController lah yang akan kita set sebagai Initial View.

Caranya, klik NavigationController pada Scene Xcode, pilih Attribut Inspector, lalu checklist pada settingan is Inital View Controller:

Initial view

Kita akan styling tampilan di NavigationController. Pilih Scene Navigator > pilih NavigationBar > lalu set Large Title. Caranya sebagai berikut:

Large title

Change Title

Ubah Title di NavigationController TableView menjadi seperti ini: (tinggal diikuti langkah 1 dan langkah 2 untuk mengganti Title navigasi):

Title navigation

Tadi yang kita ubah adalah TableView dari NavigationController. Di dalam TableView tersebut, ada yang namanya TableViewCell. Ini nanti akan dijelaskan detail di sesi Bootcamp. Untuk saat ini, si TableViewCell tersebut perlu kita beri nama sebagai identifier, supaya Xcode bisa mengenali Cell tersebut dan nantinya jadi bisa diisi dengan konten / value seperti gambar, teks, dll.

Ikuti step berikut ini, TableViewCell nya kita beri nama ArtworkCell:

Cell

ArtworkTableViewController

Berikutnya kita akan membuat file baru dan kita beri nama ArtworkTableViewController:

New file

New swift file

File name

Ubah codenya menjadi seperti ini:

New code

Langkah berikutnya, file yang tadi kita buat, perlu untuk kita pasang sebagai Custom Class di TableViewController yang sudah ada (bawaan si NavigationController). Jangan khawatir kalo bingung dengan istilah-istilahnya, kembali pada tujuan awal yaitu bisa mengikuti dan merasakan experience ketika menggunakan Xcode. Silahkan diikuti step dibawah, pada bagian Custom Class, isikan valuenya dengan nama file yang tadi kita buat yaitu ArtworkTableViewController:

ArtworkTableViewController

Jalankan projectnya dengan cara sebagai berikut. Dan jika berhasil maka akan muncul di Simulator:

Run the project

Cell Style

Sama seperti Title pada NavigationBar, kita juga bisa ubah-ubah style pada TableViewCell. Ikuti langkah pada gambar. Ubah nilai row heightnya menjadi 250:

Change the style

Image View

Selanjutnya kita tambahkan object ImageView di Object Library ke ArtworkTableViewController. Caranya sebagai berikut:

Adding ImageView

Kemudian kita styling UIImageView tersebut dengan menggunakan fitur AutoLayout.

Silahkan diikuti poin-poin dibawah. Pilih UIImageView nya > Pilih tombol Constraint > Berikan value sesuai dengan angka yang tertera di gambar dibawah, lalu setelah itu klik tombol Add 4 Constraints:

Auto layout

Dan supaya ada gambaran nanti tampilannya seperti apa, pilih UIImageView > Klik Attribut Inspector, lalu samakan valuenya sesuai contoh berikut:

Attribut

Adding label

Selanjutnya kita akan menambahkan dua Text Label dari Object Library, lalu akan kita tempatkan di UIImageView yang sudah kita buat pada step sebelumnya. Cara menambahkan label dari Object Library sama seperti menambahkan Navigation Controller, tinggal drag and drop. Urutan pengerjaannya sebagai berikut:

Pertama, dari objectlibrary pilih Label: Add label

Kedua, tambahkan attribute style pada label: Add attribute

Ketiga, tambahkan Auto Layout Constraint: Add constraint

Keempat, buat satu lagi label. Kalau yang pertama tadi untuk AuthorName, sekarang buat untuk Description. AuthorName dan Description kan sudah kita buat di dalam file Artwork.swift. Masih ingat?

Description

Kelima, tambahkan Auto Layout Constraint dengan value sebagai berikut:

Auto layout

Selesai!

ArtworkTableViewCell

Jika sebelumnya yang kita atur dan konfigurasikan itu adalah ArtworkTableViewController, nah sekarang konten dari ArtworkTableViewController itu yang perlu kita setup. Caranya;

Pertama; buat file baru dan beri nama ArtworkTableViewCell

ArtworkTableViewCell

Kedua, setelah bikin file bernama ArtworkTableViewCell diatas, tentu file tersebut harus dipasangkan dengan View Cell nya yaitu ArtworkCell. Maka dari itu, kembali ke Main Scene lalu lakukan step berikut:

Setting Class Name

Connecting the code

Di part ini perlu untuk lebih fokus lagi, karena inilah kunci dari bagaimana tampilan visual yang sudah kita buat, itu bisa berinteraksi dengan file-file code yang sudah kita buat juga.

Di step ini kita akan melakukan hal krusial yaitu mengubungkan antar Code dan Tampilan (View). Perhatikan cara berikut ini lalu ikuti:

Pertama, open code editor side-by-side dengan tampilan ArtworkTableViewController:

Code editor

open code editor

Kedua, pada file ArtworkTableViewCell, ketikkan code dibawah ini:

import UIKit
class ArtworkTableViewCell: UITableViewCell {
@IBOutlet weak var thumbnailImageView:UIImageView!
@IBOutlet weak var authorNameLabel: UILabel!
@IBOutlet weak var descLabel: UILabel!
}

Ketiga, ikuti step pada gambar dibawah. Ini adalah cara untuk mengubungkan antara Tampilan dengan Code yang sudah kita buat. Pada sesi Bootcamp nanti akan lebih dijelaskan detail lagi.

Klik & Drag thumbnailImageView ke UIImageView Klik & Drag authorNameLabel ke text Label Author Name Klik & Drag descLabel ke text Label Description

Connecting IBOutlet

Bagaimana, sudah bisa?

Finishing Touch

Lengkapi code di file ArtworkTableViewCell menjadi seperti ini hasil akhirnya:

import UIKit
class ArtworkTableViewCell: UITableViewCell {
@IBOutlet weak var thumbnailImageView:UIImageView!
@IBOutlet weak var authorNameLabel: UILabel!
@IBOutlet weak var descLabel: UILabel!
var artwork: Artwork! {
didSet {
updateUI()
}
}
func updateUI() {
thumbnailImageView.image = UIImage(named: artwork.thumbnailFileName)
authorNameLabel.text = artwork.authorName
descLabel.text = artwork.description
}
}

Kemudian pada file ArtworkTableViewController lengkapi code nya menjadi seperti ini hasil akhirnya:

import UIKit
class ArtworkTableViewController: UITableViewController {
var artwork: [Artwork] = Artwork.fetchArtwork()
// MARK: UITableViewDataSource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return artwork.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ArtworkCell", for: indexPath) as! ArtworkTableViewCell
let artwork = artwork[indexPath.row]
cell.artwork = artwork
return cell
}
}

Terakhir, pada file Main, pilih ArtworkTableViewController, pilih area dibawah UITableViewCell (seperti contoh di gambar), lalu ubah nilai Row Height nya menjadi 250

Row height

Pada Label "Author Name", di kasus saya masih ada AutoLayout yang berwarna merah. Itu artinya nanti tampilannya akan sedikit berantakan. Untuk solusinya, saya tambahkan constraint secara otomatis dengan cara klik tombol "Add Missing Constraint" :

Add missing constraint

Jalankan aplikasinya dan hasilnya menjadi seperti ini:

showcase


MVC Pattern

Rapihkan file-file yang tadi sudah kita buat dengan cara mengelompokkannya kedalam group Model, View dan Controller atau lebih dikenal dengan MVC Design Pattern. Untuk lebih detailnya lagi, akan kita bahas di sesi Bootcamp nanti.

MVC Pattern

OKE. Sementara itu dulu. Cukup panjang dan bikin pusing juga ya? Hehehe

Gapapa. Pelan tapi pasti semua akan terasa make senses pada saat Bootcamp nanti.

Sampai bertemu di Bootcamp ⚡️


💡

Ikuti perkembangannya di akun Twitter Hidayat Abisena ⚡️!