Khi vào Github, mình bất ngờ thấy một project khá hay, đó là project app bấm giờ: Stopwatch Stopwatch ứng dụng navigation controller, UILabel, UIButton và UITableView và chủ yếu layout bằng cách kéo thả giao diện. Xem thêm: viết phần mềm Trong bài viết này, mình sẽ giúp bạn làm project Xem thêm: ngôn ngữ lập trình web B1: Chạy Xcode, khởi tạo 1 project mới, ở đây mình đặt tên cho nó là "Stopwatch" Sau đó tạo thêm 1 file swift có sẵn import Foundation đặt tên cho nó là Stopwatch.swift Xem thêm: lập trình website B2: bắt đâu tạo - Mở file Main.storyboard, đây là nơi để hiển thị giao diện + Đầu tiên hãy tạo ra 1 NavigationController kế thừa từ ViewController cho trước click vào hình tròn màu vàng ở trên ViewController -> Editor -> Embed in -> NavigationController + Tất cả những đối tượng chúng ta cần dùng đến là: UILabel, UIButton, UITableView - Bắt đầu thêm các đối tượng vào ViewController: + Thêm 2 UILabel đặt tên là: timerLabel vào lapTimerLabel + Thêm 2 UIButton: playPauseButton và lapRestButton + Thêm 1 UITableView: lapsTableView - Sau khi thêm đủ các đối tượng, tiến hành ánh xạ các đối tượng vào file ViewController rồi đặt tên cho chúng - Ở bên file Stopwatch.swift: import Foundation class Stopwatch: NSObject { var counter: Double var timer: Timer override init() { counter = 0.0 timer = Timer() } } counter với timer, là 2 thuộc tính mình tạo ra cho đối tượng Stopwatch, Double và Timer là kiểu dữ liệu Double là kiểu dữ liệu số (giống như Int), nhưng Int là số nguyên không có phần thập phân, Double là có phần thập phân (kiểu như số thực) với phạm vi giá trị lớn. - Bên file ViewController: Bên trên hàm ViewDidLoad fileprivate let mainStopwatch: Stopwatch = Stopwatch() fileprivate let lapStopwatch: Stopwatch = Stopwatch() fileprivate var isPlay: Bool = false fileprivate var laps: [String] = [] Ở đây chúng ta thấy kiểu khai báo là "fileprivate let", tức là đối tượng được khai báo sẽ được ẩn đi để các đối tượng khác bên ngoài thực thể mình khai báo không gọi được, còn bên trong thực thể đó sử dụng bình thường. - Bây giờ hãy vào trong hàm ViewDidLoad: let initCircleButton: (UIButton) -> Void = { button in button.layer.cornerRadius = 0.5 * button.bounds.size.width button.backgroundColor = UIColor.white } Những dòng code này giúp chúng ta làm bo góc các button và đặt màu nền là màu trắng override var shouldAutorotate : Bool { return false } đoạn code này là khai báo một biếm souldAutoroate trả về giá trị Bool, Bool là kiểu dữ liệu boolean, chỉ gồm 2 giá trị true/false (đúng/sai)