Hallo gaes, sudah lama rasanya tidak menulis tutorial tentang iOS.
Nah pada kesempatan kali ini saya akan coba membahas tentang UITableView. UITableView merupakan widget yang biasa digunakan untuk menampilkan data dalam bentuk list. Pada umumnya komponen di dalam UITableView disebut dengan UITableViewCell. Komponen UITableViewCell inilah yang mengisi setiap baris-baris di dalam list. Secara default, UITabelViewCell cuma berisi title dan subtitle. Maka dari itu jika ingin membuat baris yang lebih komplek maka kita perlu membuat custom UITableViewCell.
Oke singkat penjelasannya di atas, sekarang langsung kita praktekkan aja.
Pertama buat project baru di Xcode, untuk bahasa pemrogramannya menggunakan Swift 3.
Kemudian pada halaman storyboard-nya kita menggunakan Table View Controller. Drag and drop Table View Controller ke halaman storyboard, lalu jadikan sebagai Root View Controller (alias tanda panah berada di Table View Controller).
Setelah itu tambahkan beberapa widget di dalam Table View Cell, contohnya di sini kita menambahkan Image View dan Label. Lalu letakkan dengan posisi sebagai berikut :
Embed Table View Controller tadi ke dalam Navigation Controller dengan cara klik menu Editor → Embed in → Navigation Controller
Sekarang kita masuk ke sesi codingnya. Buka file ViewController.swift kemudian implement UITableViewController seperti berikut :
import UIKitTambahkan type struct untuk item Food.
class ViewController: UITableViewController {
var foods = [Food(thumb: "rendang", name: "Rendang", country: "Indonesia"),
Food(thumb: "nasi_goreng", name: "Nasi Goreng", country: "Indonesia"),
Food(thumb: "sushi", name: "Sushi", country: "Japan"),
Food(thumb: "tom_yum_goong", name: "Tom Yum Goong", country: "Thailand"),
Food(thumb: "pad_thai", name: "Pad Thai", country: "Thailand"),
Food(thumb: "som_tam", name: "Som Tam", country: "Thailand"),
Food(thumb: "dim_sum", name: "Dim Sum", country: "Hongkong"),
Food(thumb: "ramen", name: "Ramen", country: "Japan"),
Food(thumb: "peking_duck", name: "Peking Duck", country: "China"),
Food(thumb: "massaman_curry", name: "Massaman Curry", country: "Thailand")]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
struct Food {Tambahkan class CustomCell.
var thumb = String()
var name = String()
var country = String()
}
class CustomCell: UITableViewCell {Kemudian reference komponen dari Table View Cell di storyboard ke kelas CustomCell di atas.
@IBOutlet weak var thumbImageView: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var countryLabel: UILabel!
}
Tambahkan extension di bawahnya kemudian override beberapa function dari TableView.
extension ViewController {Source code lengkapnya jadi sebagai berikut :
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return foods.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let food = foods[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.thumbImageView.image = UIImage(named: food.thumb)
cell.nameLabel?.text = food.name
cell.countryLabel.text = food.country
return cell
}
}
import UIKitBuild dan jalankan maka hasilnya seperti ini :
class ViewController: UITableViewController {
var foods = [Food(thumb: "rendang", name: "Rendang", country: "Indonesia"),
Food(thumb: "nasi_goreng", name: "Nasi Goreng", country: "Indonesia"),
Food(thumb: "sushi", name: "Sushi", country: "Japan"),
Food(thumb: "tom_yum_goong", name: "Tom Yum Goong", country: "Thailand"),
Food(thumb: "pad_thai", name: "Pad Thai", country: "Thailand"),
Food(thumb: "som_tam", name: "Som Tam", country: "Thailand"),
Food(thumb: "dim_sum", name: "Dim Sum", country: "Hongkong"),
Food(thumb: "ramen", name: "Ramen", country: "Japan"),
Food(thumb: "peking_duck", name: "Peking Duck", country: "China"),
Food(thumb: "massaman_curry", name: "Massaman Curry", country: "Thailand")]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
struct Food {
var thumb = String()
var name = String()
var country = String()
}
class CustomCell: UITableViewCell {
@IBOutlet weak var thumbImageView: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var countryLabel: UILabel!
}
extension ViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return foods.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let food = foods[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.thumbImageView.image = UIImage(named: food.thumb)
cell.nameLabel?.text = food.name
cell.countryLabel.text = food.country
return cell
}
}
Source code lengkap dapat dilihat di https://github.com/wimsonevel/CustomUITableViewCell
Sekian tutorial dari saya dan semoga bermanfaat.
Jangan lupa share ke sosial media kalian. Thanks :)